您的位置:首页 > 其它

汇编语言转移指令规则汇总

2016-03-17 14:12 465 查看
转自:http://blog.csdn.net/trochiluses/article/details/19355425
摘要:虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循环和实现其他条件执行语句,如if…endif的基本要素。
条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令):如果标志匹配成功,该指令就将控制转移到目标位置;如果匹配失败,CPU忽略该条件跳转指令而继续执行下一条指令。一些条件跳转指令只是简单测试符号位(sign)、进位位(carry)、溢出位(overflow)、零标志(zero)位的设置。例如,在执行一条sh1指令后,您需要测试进位标志,来判断sh1是否从操作数的高地址位移出一位。类似地,也可以在一条test指令后测试零标志位,来判断指定的位是否为1。大多数情况,在cmp指令之后执行条件跳转指令。cmp指令设置标志位,以便判断小于、大于、等于等情况。
测试标志位的JCC指令[align=center]
指 令[/align]描 述条 件别 名相 反 指 令
JC如果进位位被置位则跳转进位标志=1JB,JNAEJNC
JNC如果进位位没有置位则跳转进位标志=0JNB,JAEJC
JZ如果0标志被置位则跳转0标志=1JEJNZ
JNZ如果0标志没有置位则跳转0标志=0JNEJZ
[align=right](续表)[/align][align=center]
指 令[/align]描 述条 件别 名相反指令
JS如果符号位被置位则跳转符号标志=1JNS
JNS如果符号位没有被置位则跳转符号标志=0JS
JO如果溢出标志置位则跳转溢出标志=1JNO
JNO如果溢出标志没有置位则跳转溢出标志=0JO
JP如果奇偶校验位被置位则跳转奇偶校验标志=1JPEJNP
JPE如果奇偶校验位为偶校验则跳转奇偶校验标志=1JPJPO
JNP如果奇偶校验位没有被置位则跳转奇偶校验标志=0JPOJP
JPO如果奇偶校验位为奇校验则跳转奇偶校验标志=0JNPJPE
使用无符号数比较的JCC指令[align=center]
指 令[/align]描 述条 件别 名相反指令
JA如果超过(>)则跳转进位标志=0,0标志=0JNBEJNA
JNBE如果不低于或等于(不 <=)则跳转进位标志=0,0标志=0JAJBE
JAE如果超过或等于(>=)则跳转进位标志=0JNC,JNBJNAE
JNB如果不低于则跳转(不 <)进位标志=0JNC,JAEJB
JB如果低于(<)则跳转进位标志=1JC,JNAEJNB
JNAE如果不超过或等于(不>=)则跳转进位标志=1JC,JBJAE
JBE如果低于或等于(<=)则跳转进位标志=1或0标志=1JNAJNBE
JNA如果不超过(不>)则跳转进位标志=1或0标志=1JBEJA
JE如果相等(=)则跳转0标志=1JZJNE
JNE如果不相等(<>)则跳转0标志=0JNZJE
使用有符号数比较的JCC指令[align=center]
指 令[/align]描 述条 件别 名相反指令
JG如果大于(>)则跳转符号标志=溢出标志或0标志=0JNLEJNG
JNLE如果小于或等于(<=)则跳转符号标志=溢出标志或0标志=0JGJLE
JGE如果大于或等于(>=)则跳转符号标志=溢出标志JNLJGE
JNL如果不小于(不<)则跳转符号标志=溢出标志JGEJL
JL如果小于(<)则跳转符号标志<>溢出标志JNGEJNL
JNGE如果大于或等于(>=)跳转符号标志<>溢出标志JLJGE
JLE如果小于或等于(<=)跳转符号标志<>溢出标志或0标志=1JNGJNLE
JNG如果不大于(不>)则跳转符号标志<>溢出标志或0标志=1JLEJG
JE如果等于(=)则跳转0标志=1JZJNE
JNE如果不等于(<>)则跳转0标志=0JNZJE
loop跳转指令:注意这下面三行代码:             MOV     CX,3  
     NEXT: MOVSB  
      LOOP    NEXT  
     其中,loop的跳转机制:通过对cx进行自动递减来实现跳转
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: