- 1、本文档共150页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五、控制转移类指令 控制转移类指令是能够使程序的执行流程发生改变的指令,可以分为以下几类: 1.无条件转移指令 2.条件转移指令 3.循环控制指令 1.无条件转移 无条件转移指令 JMP 有以下几种类型 (1) 段内直接短转移 (2) 段内直接近转移 (3) 段内间接转移 (4) 段间直接转移 (5) 段间间接转移 指令名称 指令格式 指令功能 转移范围 段内直接短转移 JMP disp8 (IP)←(IP)+ disp8 -128 ~ +127 段内直接近转移 JMP disp16 (IP)←(IP)+ disp16 -32K ~ +32K 段内间接转移 JMP mem/reg (IP) ← (mem) (IP) ← (reg) -32K ~ +32K 段间直接转移 JMP addr (IP)←偏移地址 (CS) ←段地址 -32K ~ +32K 段间间接转移 JMP mem (IP) ← (mem) (CS) ← (mem)+2 -32K ~ +32K 1.无条件转移(续) 1.无条件转移(续) ⑴ 段内直接短转移 JMP SHORT opr ; (IP)←(IP) + Data8 Data8是一个字节的补码数 ,范围:-128~+127 ⑵ 段内直接近转移 JMP NEAR PTR opr ;(IP)←(IP) + Data16 Data16是两个字节的补码数 ,范围:-32768~+32767 ⑶ 段内间接转移 JMP WORD PTR opr ;(IP)←寄存器或存储器操作数 1.无条件转移(续) ⑷ 段间直接转移 JMP FAR PTR opr ;指令中用立即数的形式指出目标位置的段地址和偏移量 ⑸ 段间间接转移 : JMP DWORDPTR opr ;目标位置的段地址和偏移量保存在存储器中 1.无条件转移(续) 说明: ①汇编语言中常使用标号表示要转移到的位置 ②DEBUG环境中常使用直接指出的将要转移到的位置 ③使用 JMP 指令,可以使程序流程改变到任何目标位置 2.条件转移 条件转移指令根据判断条件是否成立决定是否转移 条件转移按照判断条件的不同分为以下类型:单个标志、无符号数判断、有符号数判断、CX寄存器 条件转移都是段内直接短转移,即: (IP) = (IP) + Data8 类型的转移。 指令格式 指令功能 测试条件 说明 JE/JZ disp (IP)←(IP)+(disp) (ZF)=1 单标志测试 JNE/JNZ disp (IP)←(IP)+(disp) (ZF)=0 JS disp (IP)←(IP)+(disp) (SF)=1 JNS disp (IP)←(IP)+(disp) (SF)=0 JP/JPE disp (IP)←(IP)+(disp) (PF)=1 JNP/JPO disp (IP)←(IP)+(disp) (PF)=0 JO disp (IP)←(IP)+(disp) (OF)=1 JNO disp (IP)←(IP)+(disp) (OF)=0 JC disp (IP)←(IP)+(disp) (CF)=1 JNC disp (IP)←(IP)+(disp) (CF)=0 2.条件转移(续) 指令格式 指令功能 测试条件 说明 JB/JNAE disp (IP)←(IP)+(disp) (CF)=1 无符号数测试 A:高于(Above) B:低于(Below) E:等于(Equal) JAE/JNB disp (IP)←(IP)+(disp) (CF)=0 JA/JNBE disp (IP)←(IP)+(disp) (CF)=0 且 (ZF)=0 JBE/JNA disp (IP)←(IP)+(disp) (CF)=0 或 (ZF)=1 JG/JNLE disp (IP)←(IP)+(disp) (SF)= (OF) 且 (ZF)=0 带符号数测试 G:大于(Great) L:小于(Less ) E:等于(Equal) JGE/JNL disp (IP)←(IP)+(disp) (SF)= (OF) JL/JNGE disp (IP)←(IP)+(disp) (SF) ? (OF) 且 (ZF)=0 JLE/JNG disp (IP)←(IP)+(disp) (SF) ? (OF) 或 (ZF)=1 JCXZ dis
文档评论(0)