5.程序控制指令
8086/8088程序中指令的执行顺序是由代码寄存器CS和指针IP来决定的。程序转移指令用来改变这两个寄存器的内容,从而改变程序的执行顺序。转移指令分四组;无条件转移指令、条件转移指令、循环控制指令及有关中断指令。
(1)无条件转移指令
①JMP
格式: JMP OPRD(标号)
功能:无条件转移到目的单元,无返回值。
段内直接转移,范围为段内任何位址(±32K)。若转移范围在±127B之内时,则称之为段内短转移。例如:
JMP SHORT NEXT ;段内短转移
段间直接转移,可转到程序的任何位置,例如:JMP FAR PTR NEXT
此时需用NEXT的段地址和偏移地址取代当前的CS和IP。段内间接转移,可转移到段内的任何位置,例如:JMP CX
指令执行时用CX的内容取代当前IP,而CS不变。段间间接转移,可转移到程序的任何位置。例如:JMP SEGOFF
指令执行时,在由SEGOFF的段和偏移量所确定的双字单元中,用较小地址的字单元内容取代IP,较大地址字单元内容取代CS。②CALL
格式: CALL OPRD调用指令。
③RET
返回指令。
(2)条件转移指令
条件转移指令以某些标志位或其逻辑运算为依据,满足条件时则转移。本类指令的转移的目的地址在±127字节以内。本类指令大体上分三类:
①依据单个标志位的条件转移指令
依据单个标志位的条件转移指令如下表所示。
依据单个标志位的条件转移指令
指 令 转移条件 说 明
JC
JNC CF=1
CF=0
有进位/借位时转移
无进位/借位时转移
JE/JZ
JNE/JNZ ZF=1
ZF=0 相等/等于零时转移
不相等/不等于零时转移
JS
JNS SF=1
SF=0 符号位为1(负数)时转移
符号位为0(正数)时转移
JO
JNO OF=1
OF=0 有溢出时转移
无溢出时转移
JP/JPE
JNP/JPO PF=1
PF=0 奇偶位为1/偶时转移
奇偶位为0/奇时转移
②用于无符号数的条件转移指令
用于无符号数的条件转移指令如下表所示。
本指令用于无符号数比较。
用于无符号数的条件转移指令
指 令 转移条件 说 明
JA/JNB
JAE/JNB
JB/JNAE
JBE/JNA CF=0且ZF=0
CF=0或ZF=1
CF=1且ZF=0
CF=1且ZF=1 高于/不等于且不低于时转移
高于或等于/不低于时转移
低于/不高于、不等于时转移
高于、等于/不等于时转移
③带符号数的条件转移指令
带符号数的条件转移指令如下表所示。
带符号数的条件转移指令
带符号数的条件转移指令
指 令 转移条件 说 明
JG/JNLE (SF)XOR(OF)=0且ZF=0 高于/低于且不等于时转移
JGE/JNL (SF)XOR(OF)=0
或ZF=1 高于或等于/低于时转移
JL/JNGE ( SF)XOR(OF)=1且ZF=0 高于/低于时转移
JLE/JNG (SF)XOR(OF)=1
或ZF=0 低于或等于/高于时转移
上述指令用于带符号数的比较。
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。