资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
控制转移类指令,2.6.1 条件转移指令 2.6.2 无条件转移指令 2.6.3 循环指令 2.6.4 子程序调用指令 2.6.5 中断指令,2.6.1 条件转移指令,1简单条件转移指令 2无符号数条件转移指令 3. 有符号数条件转移指令 它们都有通用的语句格式和功能。 语句格式: 标号: 操作符 短标号 功能:如果条件满足,则(IP)位移量IP。,1简单条件转移指令,2无符号数条件转移指令,表2.2 无符号数条件转移指令,【例】比较无符号数大小,将较大的数存放AX寄存器。 CMP AX, BX ;(AX)(BX) JNB NEXT ;若AX=BX,转移到NEXT XCHG AX,BX ;若AX=BX,转移到NEXT XCHG AX,BX ;若AXBX,交换 NEXT:,2.6.2 无条件转移指令,表2.4 无条件转移指令的语句格式及功能,2.6.3 循环指令,1循环指令LOOP 2相等/为零循环指令LOOPE 3不相等/不为零循环指令LOOPNE 4CX为零转移指令JCXZ,1循环指令LOOP 语句格式: LOOP 短标号 功能:(CX)1 0,则程序转移(循环);否则,顺序执行。 说明:使用LOOP指令可代替两条指令: DEC CX JNE 短标号,2相等/为零循环指令LOOPE 语句格式: LOOPE 短标号 LOOPZ 短标号 功能:(CX)1 0且ZF=1,则程序转移(循环);否则,顺序执行。,3不相等/不为零循环指令LOOPNE 语句格式: LOOPNE 短标号 LOOPNZ 短标号 功能:(CX)10,则程序转移(循环);否则,顺序执行。,4CX为零转移指令JCXZ 语句格式: JCXZ 短标号 功能:(CX)10,则程序转移(循环);否则,顺序执行。,2.6.4 子程序调用指令,1子程序调用指令CALL (1)段内直接调用 (2)段间直接调用 (3)段内间接调用 (4)段间间接调用 2返回指令RET (1)语句格式:RET (2)语句格式:RET n(n为偶数),2.6.5 中断指令,1中断调用指令INT 语句格式:INT n 功能:(FLAGS)(SP),0 IF、TF。 (CS) (SP),(4*n+2) CS。 (IP) (SP),(4*n) IP。 2中断返回指令IRET 语句格式:IRET 功能:(SP)IP (SP) CS(SP) FLAGS,3、2、5 控制转移指令 控制转移指令分成无条件转移指令和条件转移指令。 1无条件转移指令 转移可以分成两类:段内转移和段间转移。 段内转移是指在同一段的范围之内进行转移,此时只需改变IP寄存器的内容,即用新的转移目标地址代替原有的IP的值就可达到转移的目的。 段间转移则是要转到另一个段去执行程序,此时不仅要修改IP寄存器的内容,还需要修改CS寄存器的内容才能达到目的,因此此时的转移目标地址应由新的段地址和偏移地址两部分组成 。,(1)直接短转移 JMP SHORT OPR ; 操作:(IP) (IP)+8位位移量 (2)段内直接转移 JMP NEAR PTR OPR; 操作:(IP) (IP)+16位位移量 (3)段内间接转移 JMP WORD PTR OPR; 操作:(IP) (有效地址) (4)段间直接(远)转移 JMP NEAR PTR OPR操作:(IP)OPR的段内偏移地址(CS)OPR所在段的段地址 (5)段间间接转移 JMP DWORD PTR OPR操作:(IP)(EA)(CS)(EA+2),2、条件转移指令 状态标志作为转移的条件,当满足一定的条件时,转移到指定的地址,否则,将顺序执行下条指令。 作为判断条件的状态标志位有:CF、PF、ZF、SF和OF。 根据单个标志位的设置情况转移这组包括10种指令,它们一般适用于测试某一次运算的结果并根据其不同特征产生程序分支作不同处理的情况。 结果为零(或相等)转移 JZ/JE OPR ; ZF=1结果不为零(或不相等)转移 JNZ/JNE OPR; ZF=0结果为负转移 JS OPR ; SF=1结果为正转移 JNS OPR ;SF=0,溢出转移 JO OPR ;OF=1 无溢出转移 JNO OPR ;OF=0 奇偶位为1转移 JP/PE OPR ;PF=1 奇偶位为0转移 JNP/JPO OPR;PF=0 低于/不高于或等于/进位为1转移 JB/JNAE/JC OPR;CF=1 不低于/高于或等于/进位为0转移 JNB/JAE/JNC OPR;CF=0(2)比较两个无符号数,并根据比较的结果转移。 低于/不高于或不等于/进位为1转移JB/JNAE/JC OPR; CF=1且ZF=0 不低于/高于或等于/进位为0转移JNB/JAE/JNC OPR; CF=0或ZF=1,低于或等于/不高于转移 JBE/JNA OPR; CF=1或CF=1 不低于或不等于/高于转移 JNBE/JA OPR; CF=0且ZF=0 (3)比较两个带符号数,并根据比较结果转移。 小于或者不大于或者等于转移 JL(或JNGE) OPR SFZF=1 小于或者不大于或者等于转移 JNL(或JGE) OPR SFZF=0 小于或等于,或者不大于转移 JLE(或JNG) OPR (SFZF)ZF=1 小于或等于,或者不大于转移 JNLE(或JG) OPR (SFZF)ZF=0,(4)测试CX的值为0则转移指令 JCXZ OPR; (CX)=0则转移3、循环控制指令 (1)LOOP(LOOP)循环指令格式:LOOP OPR测试条件:(CX)0 (2)LOOPZ/LOOPE(Loop while zero or equal) 当为零或相等时循环指令格式:LOOPZ(或LOOPE) OPR测试条件:ZF=1且(CX)0 (3)LOOPNZ/LOOPNE(Loop while nonzero, or not equal)当不为零或不相等时循环指令格式:LOOPNZ(或LOOPNE) OPR测试条件:ZF=0且(CX)0,4、子程序 CALL调用指令 (1)段内直接调用格式: CALL DST执行的操作:(IP)(SP)2;(SP)1,(SP)(IP);(IP)(IP)D16; ()段内间接调用格式: CALL DST执行的操作:(SP)(SP)2;(SP)1,(SP)(IP);(IP)(EA) ()段间直接调用格式: CALL DST,执行的操作:(SP)(SP)2;(SP)1,(SP)(CS);(SP)(SP)2;(SP)1,(SP)(IP);(IP)偏移地址(指令的第2,3个字节);(CS)段地址(指令的第4,5个字节)。 (4)段间间接调用格式: CALL DST执行的操作:(SP)(SP)2;(SP)1,(SP)(CS);(SP)(SP)2;(SP)1,(SP)(IP);(IP)(EA);(CS)(EA2),RET返回指令 段内返回 RET ;(IP) (SP)+1,(SP)(SP)(SP)+2 段内带立即数返回 RET EXP;(IP)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+DISP16位移量 段间返回 RET;(IP)(SP)+1,(SP)(SP)(SP)+2 (CS)(SP)+1,(SP) (SP)(SP)+2,段间带立即数返回 RET EXP;(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+DISP16位移量 3、2、6 处理机控制指令 1标志处理指令 (1)CLC进位位置0指令(Clear carry) CF 0 (2)CMC进位位求反指令(Complement carry)CFCF (3)STC进位位置1指令(Set carry)CF1 (4)CLD方向标志置0指令(Clear direction) DF0,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号