指令系统(控制转移类指令)

上传人:我** 文档编号:117869259 上传时间:2019-12-11 格式:PPT 页数:14 大小:127.50KB
返回 下载 相关 举报
指令系统(控制转移类指令)_第1页
第1页 / 共14页
指令系统(控制转移类指令)_第2页
第2页 / 共14页
指令系统(控制转移类指令)_第3页
第3页 / 共14页
指令系统(控制转移类指令)_第4页
第4页 / 共14页
指令系统(控制转移类指令)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《指令系统(控制转移类指令)》由会员分享,可在线阅读,更多相关《指令系统(控制转移类指令)(14页珍藏版)》请在金锄头文库上搜索。

1、控制转移指令控制转移指令 无无条件转移指令根据其转移范围的大小可以分为五种方式条件转移指令根据其转移范围的大小可以分为五种方式: : 指令名称指令名称指令格式指令格式执行操作执行操作 1.1.段内直接短转移段内直接短转移JMP SHORT OPRJMP SHORT OPRIP (IP) + 8IP (IP) + 8位位移量位位移量 2.2.段内直接近转移段内直接近转移JMP NEAR PTR OPRJMP NEAR PTR OPRIP (IP) + 16IP (IP) + 16位位移量位位移量 3.3.段内间接转移段内间接转移JMP WORD PTR OPRJMP WORD PTR OPRIP

2、 (EA)IP (EA) 4.4.段间直接转移段间直接转移JMP FAR PTR OPRJMP FAR PTR OPR IP OPR IP OPR 的段内偏移地址的段内偏移地址 CS OPRCS OPR所在段的段地址所在段的段地址 5.5.段间间接转移段间间接转移JMP DWORD PTR OPRJMP DWORD PTR OPR IP (EA)IP (EA) CS (EA+2) CS (EA+2) 1.1.无条件转移指令无条件转移指令JMPJMP 指令功能:无条件地转移到由地址表达式所确定的目标单元。指令功能:无条件地转移到由地址表达式所确定的目标单元。 指令格式:指令格式:JMP JMP

3、地址表达式地址表达式 无条件转移指令的一般使用格式为:JMP 符号地址 . .条件转移指令条件转移指令 ( () ) 条件转移指令 条件转移指令 指令功能:根据前面指令形成的条件来确定转移目的的地址。指令功能:根据前面指令形成的条件来确定转移目的的地址。 指令指令操作操作:当条件满足时程序转移至标号处,当条件满足时程序转移至标号处, 转移范围只能在离当前转移范围只能在离当前IPIP的的-128 -128 +127 +127个字节之内。个字节之内。 按照转移条件分为四类按照转移条件分为四类 1. 1. 单个标志位的条件单个标志位的条件转移指令。如转移指令。如JZJZ(JEJE)、)、JP JP

4、2. 2.两个无符号数比较的两个无符号数比较的条件转移指令。如条件转移指令。如JB(JNAE,JC)JB(JNAE,JC)、JBE(JNA) JBE(JNA) 3.3.两个两个有符号数比较的有符号数比较的条件转移指令。如条件转移指令。如JLE(JNG)JLE(JNG)、JNL(JGE) JNL(JGE) 4 4 . . 测试(测试(CXCX)=0=0的条件转移指令。如的条件转移指令。如JCXZJCXZ 指令分类指令格式执行条件 1.单个标志位的条 件转移指令 JZ(JE)标号ZF=1 JNZ(JNE)标号ZF=0 JS 标号SF=1 JNS 标号SF=0 JO 标号OF=1 JNO标号OF=0

5、 JP 标号PF=1 JNP 标号PF=0 JC 标号CF=1 JNC 标号CF=0 2.两个无符号数比 较的条件转移指令 JB(JNAE)标号CF=1 () JNB(JAE)标号CF=0 () JBE(JNA)标号CFZF=1 () JNBE(JA)标号CFZF=0 () 3.两个有符号数比 较的条件转移指令 JL(JNGE)标号SFOF=1 () JNL(JGE)标号SFOF=0 () JLE(JNG)标号(SFOF)ZF=1 () JNLE(JG)标号(SFOF)ZF=0 () 3.3. (1) (1) 计数计数循环指令循环指令LOOPLOOP 循环控制指令循环控制指令 指令格式:指令格

6、式:LOOP OPRLOOP OPR 指令指令功能:每执行一次功能:每执行一次LOOPLOOP指令,指令,CXCX的内容减的内容减“1”1”,若(,若(CXCX)0 0,则循,则循 环转移到目的地址环转移到目的地址TARGETTARGET重复执行其间的程序段,直到(重复执行其间的程序段,直到(CXCX)=0=0,退出循,退出循 环,顺序执行下条指令。环,顺序执行下条指令。 例例4-184-18把数据区把数据区bufferbuffer内的内的5050个有符号字节数将正(零归正数个有符号字节数将正(零归正数 )、负数分开,并分别送到)、负数分开,并分别送到NUM1NUM1和和NUM2NUM2两个缓

7、冲区的程序如下:两个缓冲区的程序如下: LEA LEA SISI,BUFFERBUFFER LEA LEA DIDI,NUM1NUM1 LEA LEA BXBX,NUM2NUM2 MOV MOV CXCX,5050 BEGBEG: MOV ALMOV AL,SISI INC SI INC SI TEST TEST ALAL,80H80H JNZ JNZ MINUSMINUS MOV MOV DIDI,ALAL INC DI INC DI JMP JMP AGAINAGAIN MINUSMINUS:MOV MOV BXBX,ALAL INC BX INC BX AGAINAGAIN:LOOPLO

8、OP BEGBEG HLT HLT (2) (2) 结果为零或相等时循环指令结果为零或相等时循环指令LOOPE/LOOPZLOOPE/LOOPZ 指令格式:指令格式:LOOPZLOOPZ(LOOPELOOPE) OPROPR 指令功能:指令功能:使(使(CXCX)-1CX-1CX,当(,当(CXCX)0 0,且,且ZF=1ZF=1时,则循环转移至时,则循环转移至 目的地址目的地址TATGETTATGET去重复执行其间的程序段。当(去重复执行其间的程序段。当(CXCX)=0=0,或,或ZF=0ZF=0,退出循,退出循 环,顺序执行本指令的下条指令。环,顺序执行本指令的下条指令。 例例 41941

9、9找出以找出以NUMNUM为首地址的为首地址的100100个字节数组中第一个非零项个字节数组中第一个非零项 ,并将其置于,并将其置于AL AL 中,数组中若无非零项,则(中,数组中若无非零项,则(ALAL)=0=0。程序如。程序如 下:下: MOVMOV CXCX,100100 LEA LEA BXBX,NUMNUM MOVMOV SISI,0FFFFH0FFFFH ZERO ZERO:INCINCSISI CMPCMP BYTE PTR BX+SIBYTE PTR BX+SI,0 0 LOOPZ ZEROLOOPZ ZERO JZ JZ OVER OVER MOV MOV ALAL,BX+S

10、IBX+SI JMPJMP DONE DONE OVER OVER :MOVMOV ALAL,0 0 DONE DONE:HLTHLT (3) (3) 结果不为零或不相等时循环指令结果不为零或不相等时循环指令LOOPNE/LOOPNZLOOPNE/LOOPNZ 指令格式:指令格式:LOOPNZLOOPNZ(LOOPNELOOPNE) OPROPR 循环条件:循环条件:ZF=0 ZF=0 且且 (CXCX) 0 0 执行操作:执行操作: (CX) (CX) (CX) (CX)1 1; 检查是否满足循环条件检查是否满足循环条件: : 如满足则实行循环;如满足则实行循环; 不满足则退出循环。不满足则

11、退出循环。 过程调用指令过程调用指令CALLCALL与返回指令与返回指令RETRET 4.4. 为便于模块化程序设计,可把某些经常重复出现的一段程序独立编制成 一个模块,称为一个子过程或子程序。程序中可由调用指令CALL调用子程 序,在子程序执行完成后又用返回指令RET返回调用程序继续执行。 过程调用指令过程调用指令CALLCALL必须同返回指令必须同返回指令RETRET成对使用。成对使用。 过程定义的形式如下(详见第五章过程定义的形式如下(详见第五章“ “伪指令伪指令” ”):): 过程名过程名PROC near / farPROC near / far 过程体过程体 RETRET 过程名过

12、程名ENDP ENDP (1) CALL(1) CALL指令指令 段内直接调用段内直接调用 指令格式:指令格式:CALLCALLDSTDST 执行操作:执行操作:SPSP(SPSP)2 2 ( (SPSP) )+1+1, (, (SP)SP) (IPIP) IPIP(IPIP)+ 16+ 16位位移量位位移量 段内间接调用段内间接调用 指令格式:指令格式:CALLCALLDSTDST 执行操作:执行操作:SPSP(SPSP)2 2 ( (SPSP) )+1+1, (, (SP)SP) (IPIP) IPIP(EAEA) 过程调用指令过程调用指令CALLCALL与返回指令与返回指令RETRET

13、4.4. (1) CALL(1) CALL指令指令 段间直接调用段间直接调用 指令格式:指令格式:CALLCALLDSTDST 执行操作:执行操作:SPSP(SPSP)2 2 ( (SPSP) )+1+1, (, (SP)SP) (CSCS) SPSP(SPSP)2 2 ( (SPSP) )+1+1, (, (SP)SP) (IPIP) IPIP 偏移地址偏移地址 CSCS 段地址段地址 段间间接调用段间间接调用 指令格式:指令格式:CALLCALLDSTDST 执行操作:执行操作:SPSP(SPSP)2 2 ( (SPSP) )+1+1, (, (SP)SP) (CSCS) SPSP(SPS

14、P)2 2 ( (SPSP) )+1+1, (, (SP)SP) (IPIP) IPIP (EAEA) CSCS (EA+2EA+2) CALL指令不影响标志位 常用格式:CALL 子程序名 过程调用指令过程调用指令CALLCALL与返回指令与返回指令RETRET (2)(2) 段内返回段内返回 指令格式:指令格式:RETRET 执行操作:执行操作:IPIP ( (SPSP) )+1+1, (, (SP)SP) ) SPSP(SPSP)+ +2 2 段内带立即数返回段内带立即数返回 指令格式:指令格式: RET nRET n 执行操作:执行操作:IP (SP)+1, (SP) IP (SP)+1, (SP) SPSP(SPSP)+2+2 SP SP (SPSP)+n+n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号