324控制转移类指令.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
324控制转移类指令

3.2.4 控制转移类指令 控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的最常用指令 重点掌握:JMP/Jcc/LOOP 1. 无条件转移指令 只要执行JMP,就使程序转到指定的目标地址处,从目标地址处开始执行那里的指令 操作数label是要转移到的目标地址(目的地址、转移地址) JMP指令分成4种类型: ⑴ 段内转移、直接寻址;⑵ 段内转移、间接寻址 ⑶ 段间转移、直接寻址;⑷ 段间转移、间接寻址 无条件转移指令 jmp again ;转向again处继续执行 …… again: dec cx ;标号again的指令 …… jmp output ;转向output …… output: mov result,al ;标号output的指令 JMP 0120H ;直接转向CS:0120H单元 2. 条件转移指令 相对寻址方式 Jcc指令的操作数label是一个标号 一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移 8位位移量是相对于当前IP的,且距当前IP地址-128~+127个单元的范围之内,属于段内短距离转移 Jcc指令为2个字节,条件不满足时的顺序执行就是当前指令偏移指针IP加2 Jcc指令的分类 Jcc指令不影响标志,但要利用标志位。根据利用的标志位不同,16条指令分成3种情况: (1)判断单个标志位状态 (2)比较无符号数高低 (3)比较有符号数大小 (1)判断单个标志位状态 这组指令单独判断5个状态标志之一 ⑴JZ和JNZ:判断结果是否为零(或相等) ⑵JS和JNS:判断结果是正是负 ⑶JO和JNO:判断结果是否产生溢出 ⑷JP和JNP:判断结果中“1”的个数是偶是奇 ⑸JC和JNC:判断结果是否进位或借位 例:JZ/JNZ指令 test al,80h ;测试AL的最高位 jz next1 ;D7=0(ZF=1),转移 mov ah,0ffh ;D7=1,顺序执行 jmp done ;无条件转向 next1: mov ah,0 done: ... 例:JC/JNC CMP AX, BX JC NEXT MOV AX , BX NEXT:MOV MIN ,AX 例:JS/JNS指令 ;计算|X-Y|(绝对值) ;X和Y为存放于X单元和Y单元的16位操作数 ;结果存入result单元 mov ax , X sub ax , Y jns next neg ax ;neg是求补指令:0-ax next: mov result , ax 例:JO/JNO指令 ;计算X-Y; ;X和Y为存放于X单元和Y单元的字操作数 ;若溢出,则转移到overflow处理 mov ax , X sub ax , Y jo overflow ... ;无溢出,结果正确 overflow: ... ;有溢出,出错处理 例:JP/JNP指令 ;设字符的ASCII码在AL寄存器中 ;将字符加上奇校验位 and al,7fh ;最高位先置“0”,并判断“1”的个数 jnp next ;个数已为奇数,则转向next or al,80h ;否则,最高位置“1” next: ... (2)比较无符号数高低 无符号数的大小用 高(Above)、低(Below)表示,利用CF确定高低 利用ZF标志确定相等(Equal ) 两数的高低分成: 低于(不高于等于):JB(JNAE/JC) 不低于(高于等于):JNB(JAE/JNC) 低于等于(不高于):JBE(JNA) 不低于等于(高于):JNBE(JA ) 相等(等于零):JE/JZ 不相等(不等于零):JNE/JNZ (3)比较有符号数大小 有符号数的大小用 大(Greater)小(Less)表示 利用ZF标志确定相等(Equal) 两数的大小分成4种关系: ⑴ 小于(不大于等于):JL(JNGE) ⑵ 不小于(大于等于):JNL(JGE) ⑶ 小于等于(不大于):JLE(JNG) ⑷ 不小于等于(大于):JNLE(JG ) Jcc M,N M N 无符号数(A,B) 有符号数(G,L) (? =) JB(JNAE) JL(JNGE) = (?) JBE(JNA) JLE(JNG) (?=) JA(JNBE) JG(JNLE) = (?) JNB(JAE) JNG(JLE) = JE/JZ ≠ JNE/JNZ 例:比较无符号数 c

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档