第3章6 控制转移指.ppt
《第3章6 控制转移指.ppt》由会员分享,可在线阅读,更多相关《第3章6 控制转移指.ppt(29页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 无条件转移无条件转移指令指令 JMP 条件转移条件转移指令指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 循环循环指令指令 LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE 子程序调用和返回子程序调用和返回指令指令 CALL、RET 中断与中断返回中断与中断返回指令指令 INT、INTO、IRET3.2.5 控制转移指令:控制转移指令:JMP(jmp)跳转指令无条件地转移到指令指定的地址去执行从该地址开始的指令。可以看出JMP指令必须指定转移的目标地址(或称转向地址)。总的说来,转
2、移可以分成两类:段内转移和段间转移。段内转移是指在同一代码段的范围之内进行转移,此时只需改变IP寄存器的内容,即用新的转移目标地址代替原有的IP的值就可达到转移的目的。段间转移则是要转到另一个代码段去执行程序,此时不仅要修改IP寄存器的内容,还需要修改CS寄存器的内容才能达到目的,因此,此时的转移目标地址应由新的段地址和偏移地址两部分组成。1 无条件转移指令无条件转移指令无条件转移指令的格式及执行的操作:无条件转移指令的格式及执行的操作:段内直接短转移:段内直接短转移:JMP SHORT OPR(例)例)执行操作:执行操作:(IP)(IP)+8位位移量位位移量段内直接近转移:段内直接近转移:J
3、MP NEAR PTR OPR 执行操作:执行操作:(IP)(IP)+16位位移量位位移量段内间接转移:段内间接转移:JMP WORD PTR OPR 执行操作:执行操作:(IP)(EA)无条件转移指令无条件转移指令段间直接远转移:段间直接远转移:JMP FAR PTR OPR(例)例)执行操作:执行操作:(IP)OPR 的段内偏移地址的段内偏移地址 (CS)OPR 所在段的段地址所在段的段地址段间间接转移:段间间接转移:JMP DWORD PTR OPR 执行操作:执行操作:(IP)(EA)(CS)(EA+2)说明:说明:JMP指令不影响条件标志位。指令不影响条件标志位。无条件转移指令无条件
4、转移指令条件转移指令根据上一条指令所设置的条件码来判别测试条件,每一种条件转移指令有它的测试条件,满足测试条件则转移到由指令指出的转向地址去执行那里的程序;如不满足条件则顺序执行下一条指令。因此,当满足条件时:(IP)(IP)+符号扩展到16位后的位移量D8,如不满足测试条件:则(IP)不变。可见条件转移指令使用了相对寻址方式,在汇编格式中OPR应指定一个目标地址,这个目标地址应在本条转移指令下一条指令地址的-128+127个字节的范围之内。即条件转移即条件转移指令只能使用段内直接寻址的指令只能使用段内直接寻址的8 位位移量(段内直接位位移量(段内直接短转移)。短转移)。另外,所有的条件转移指
5、令都不影响条件码。2 条件转移指令条件转移指令 格式格式 测试条件测试条件JZ(JE)OPR ZF=1JNZ(JNE)OPR ZF=0JS OPR SF=1JNS OPR SF=0JO OPR OF=1JNO OPR OF=0JP OPR PF=1JNP OPR PF=0JC OPR CF=1JNC OPR CF=0(1)根据单个条件标志的设置情况转移根据单个条件标志的设置情况转移 格式格式 测试条件测试条件 JB(JNAE,JC)OPR CF=1 JNB(JAE,JNC)OPR CF=0 JBE(JNA)OPR CFZF=1 JNBE(JA)OPR CFZF=0*适用于地址或双精度数低位字的
6、比较适用于地址或双精度数低位字的比较(2)比较两个无符号数,并根据比较结果转移比较两个无符号数,并根据比较结果转移*格式格式 测试条件测试条件 JL(JNGE)OPR SF OF=1 JNL(JGE)OPR SF OF=0 JLE(JNG)OPR (SF OF)ZF=1 JNLE(JG)OPR (SF OF)ZF=0*适用于带符号数的比较适用于带符号数的比较(3)比较两个带符号数,并根据比较结果转比较两个带符号数,并根据比较结果转移移 格式格式 测试条件测试条件 JCXZ OPR (CX)=0(4)测试测试 CX 的值为的值为 0 则转移则转移例例:如如果果 X50,转转到到TOO_HIGH;
7、否否则则|X-Y|RESULT,如如果果溢溢出出转转到到 OVERFLOW,JGJGJOJOJNSJNS MOV AX,XMOV AX,XCMP AX,50CMP AX,50 TOO_HIGH TOO_HIGHSUB AX,YSUB AX,Y OVERFLOW OVERFLOW NONNEG NONNEGNEG AXNEG AX NONNEG:NONNEG:MOV RESULT,AX MOV RESULT,AX JMP EXITJMP EXITTOO_HIGH:TOO_HIGH:JMP EXIT JMP EXITOVERFLOW:OVERFLOW:EXIT:EXIT:MOV AX,4C00HM
8、OV AX,4C00HINTINT21H21H例:例:、是双精度数,分别存于是双精度数,分别存于 DX,AX 及及 BX,CX 中,中,时转时转 X,否则转否则转Y CMP DX,BX CMP DX,BX JG X JG X JL Y JL Y CMP AX,CX CMP AX,CX JA X JA XY:Y:JMP EXITJMP EXITX:X:EXIT:EXIT:MOV AX,4C00HMOV AX,4C00HINTINT21H21H循环结构用转移指令实现循环结构:MOV CX,N AGAIN:DEC CX JNZ AGAINLOOP OPRLOOPZ/LOOPE OPRLOOPNZ/L
9、OOPNE OPR执行步骤:执行步骤:(1)(CX)(CX)-1(2)检查是否满足测试条件,检查是否满足测试条件,如如满满足足则则(IP)(IP)+8位位位位移移量量,实实行行循循环环;不满足则不满足则 IP 不变,退出循环。不变,退出循环。3 循环指令:循环指令:循环指令循环指令注意:注意:*CX 中存放循环次数中存放循环次数*只能使用段内直接寻址的只能使用段内直接寻址的8 位位移量位位移量*不影响条件标志位不影响条件标志位循环指令:循环指令:LOOP OPR测试条件:测试条件:(CX)0为零或相等时循环指令:为零或相等时循环指令:LOOPZ(LOOPE)OPR测试条件:测试条件:ZF=1
10、且且(CX)0不为零或不相等时循环指令:不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR测试条件:测试条件:ZF=0 且且(CX)0LOOP AGAIN DEC CX JNZ AGAIN循环指令:循环指令:例:求首地址为例:求首地址为 ARRAY 的的 M 个字之和,个字之和,结果存入结果存入 TOTALMOV CX,MMOV CX,MMOV AX,0MOV AX,0MOV SI,AXMOV SI,AXAGAIN:AGAIN:ADD AX,ARRAYSIADD AX,ARRAYSIADD SI,2ADD SI,2LOOP AGAINLOOP AGAINMOV TOTAL,AXMOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章6 控制转移指 控制 转移
限制150内