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/奇时转移
②用于无符号数的条件转移指令
用于无符号数的条件转移指令如下表所示。
本指令用于无符号数比较。
用于无符号数的条件转移指令
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |