第4部分 程序的逻辑流程控制.pptVIP

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4部分 程序的逻辑流程控制 1 基本的逻辑控制——无条件转移 Assembly Language Programming 程序的逻辑控制 顺序执行 依照程序的指令顺序直线式执行 大多程序是测试分支或者循环执行的 前向执行:跳过一些指令执行前面的的指令 后向执行:重新执行一些指令 这需要通过改变IP(偏移量)实现程序执行的跳转 跳转的地址类型 依据程序执行跳转的距离长短,区分3种地址类型 SHORT短 相对地址是具有1字节的偏移量,即-128到127字节的长度 NEAR近 相对地址是具有2字节的偏移量 FAR远 任意相对地址长度,一般指的是跨段跳转时的偏移量。 JMP指令 格式:[label:] JMP short/near/far address 作用:无条件的改变 IP使之指向目的地址 举例: 段内直接: JMP TARGET 段内间接: JMP CX JMP WORD PTR [BX] 段间: JMP FAR PTR TARGET JMP DWORD PTR [BX][SI] Executing a Jump Intrasegment jumps are caused by changing the IP register to a new value Short jumps add a signed 8-bit displacement to IP Near jumps add a signed 16-bit displacement to IP Intersegment jumps change both the CS and IP registers Far jumps simply assign new values to these registers LOOP指令 格式: [label:] LOOP short-address 动作: CX减去1 若CX !=0则跳转到目的地址 注意: 只适用于短地址 对标志寄存器没有影响 举例: page 60,132 TITLE A07LOOP (COM) Illustration of LOOP .MODEL SMALL .CODE ORG 100H A10MAIN PROC NEAR MOV AX,0 ;Initialize AX and MOV BX,0 ; BX to zero, MOV DX,1 ; DX to 01 MOV CX,8 ; CX for 8 loops A20: INC AX ;Add 01 to AX ADD BX,AX ;Add AX to BX SHL DX,1 ;Double DX LOOP A20 ;Decrement CX, ; loop if nonzero MOV AX,4C00H ;End processing INT 21H A10MAIN ENDP END A10MAIN LOOP的变种 Loop while (ZF/equal) || (CX==0) LOOPZ == LOOPE Loop while (NZ/ not equal) || (CX!=0) LOOPNZ==LOOPNE 依据ZF是否被设置,进行循环 注意:对标志寄存器没有影响 举例 该程序最多从键盘接收9个字符 当第9个字符按下,或者enter键按下时,程序结束。 MOV AH, 1 MOV CX, 9 next_char: INT 21H CMP AL, 13 LOOPNE next_char 2 条件转移逻辑控制 Assembly Language Programming Recap:标志寄存器 算术、逻辑和比较指令影响各个位的设置 保存了当前程序的执行状态 条件转移指令 格式:Jnnn short-address 通常条件转移指令列表 无符号数转移指令 有符号数的条件转移 举例:字符串的大小写转换 If结构 C/C++ code if (op1 == op2} { statement1; statement2; } statement3; If-else结构 C/C++ code if (op1 == op2} statement1; else statement2; statement3; Assembly Implementation CMP op1, op2 JNE else statement1 JMP endif else: statement2 endif: st

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档