条件转移指令Jcc根据指定的条件确定程序是否发生转移:
•如果满足条件,则程序转移到目标地址去执行程序
•不满足条件,则程序将顺序执行下一条指令
其通用格式为:
Jcc label ; 条件满足,发生转移;否则,顺序执行
条件转移指令中的条件cc 助记符 | 标志位 | 英文含义 | 中文说明 | JZ/JE | ZF=1 | Jump if Zero / Equal | 等于零/相等 | JNZ/JNE | ZF=0 | Jump if Not Zero / Not Equal | 不等于零/不相等 | JS | SF=1 | Jump if Sign | 符号为负 | JNS | SF=0 | Jump if Not Sign | 符号为正 | JP/JPE | PF=1 | Jump if Parity/Parity Even | “1”的个数为偶 | JNP/JPO | PF=0 | Jump if Not Parity/Parity Odd | “1”的个数为奇 | JO | OF=1 | Jump if Overflow | 溢出 | JNO | OF=0 | Jump if Not Overflow | 无溢出 | JC/JB/JNAE | CF=1 | Jump if Carry / Below / Not Above or Equal | 进位/低于/不高于等于 | JNC/JNB/JAE | CF=0 | Jump if Not Carry / Not Below / Above or Equal | 无进位/不低于/高于等于 | JBE/JNA | CF=1或ZF=1 | Jump if Below / Not Above | 低于等于/不高于 | JNBE/JA | CF=0且ZF=0 | Jump if Not Below or Equal / Above | 不低于等于/高于 | JL/JNGE | SF≠OF | Jump if Less / Not Greater or Equal | 小于/不大于等于 | JNL/JGE | SF=OF | Jump if Not Less / Greater or Equal | 不小于/大于等于 | JLE/JNG | ZF≠OF或ZF=1 | Jump if Less or Equal / Not Greater | 小于等于/不大于 | JNLE/JG | SF=OF且ZF=0 | Jump if Not Less or Equal / Greater | 不小于等于/大于 | |
可以根据判断的条件将条件转移指令分成两类。
前10个为一类,它们将5个常用状态标志为0或为1作为条件。
后8个为另一类(其中有2个与前一类重叠),将4种大小关系作为条件:
•无符号数的大小关系用高(Above)、低(Below)表示
•有符号数的大小关系用大(Greater)、小(Less)表示
编程应用中,你可以通过英文(原文对应助记符)熟悉cc代表的条件,不必记忆各种条件下状态标志的复位、置位情况。