一、状态寄存器
PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:
条件码:
①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.
控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志。
二、比较指令
test 逻辑与运算结果为零,就把ZF(零标志)置1;
cmp 算术减法运算结果为零,就把ZF(零标志)置1.
三、JCC(Jump if Condition is met)跳转指令
JCC实际上是一类指令的通用名称,其中 "CC" 是 "Condition Code" 的缩写
3.1、跳转指令
指 令 | 描 述 | 条 件 | 别 名 | 相 反 指 令 |
JC | 如果进位位被置位则跳转 | 进位标志=1 | JB,JNAE | JNC |
JNC | 如果进位位没有置位则跳转 | 进位标志=0 | JNB,JAE | JC |
JZ | 如果0标志被置位则跳转 | 0标志=1 | JE | JNZ |
JNZ | 如果0标志没有置位则跳转 | 0标志=0 | JNE | JZ |
指 令 | 描 述 | 条 件 | 别 名 | 相反指令 |
JS | 如果符号位被置位则跳转 | 符号标志=1 | JNS | |
JNS | 如果符号位没有被置位则跳转 | 符号标志=0 | JS | |
JO | 如果溢出标志置位则跳转 | 溢出标志=1 | JNO | |
JNO | 如果溢出标志没有置位则跳转 | 溢出标志=0 | JO | |
JP | 如果奇偶校验位被置位则跳转 | 奇偶校验标志=1 | JPE | JNP |
JPE | 如果奇偶校验位为偶校验则跳转 | 奇偶校验标志=1 | JP | JPO |
JNP | 如果奇偶校验位没有被置位则跳转 | 奇偶校验标志=0 | JPO | JP |
JPO | 如果奇偶校验位为奇校验则跳转 | 奇偶校验标志=0 | JNP | JPE |
3.2、使用无符号数比较的JCC指令
指 令 | 描 述 | 条 件 | 别 名 | 相反指令 |
JA | 如果超过(>)则跳转 | 进位标志=0,0标志=0 | JNBE | JNA |
JNBE | 如果不低于或等于(不 <=)则跳转 | 进位标志=0,0标志=0 | JA | JBE |
JAE | 如果超过或等于(>=)则跳转 | 进位标志=0 | JNC,JNB | JNAE |
JNB | 如果不低于则跳转(不 <) | 进位标志=0 | JNC,JAE | JB |
JB | 如果低于(<)则跳转 | 进位标志=1 | JC,JNAE | JNB |
JNAE | 如果不超过或等于(不>=)则跳转 | 进位标志=1 | JC,JB | JAE |
JBE | 如果低于或等于(<=)则跳转 | 进位标志=1或0标志=1 | JNA | JNBE |
JNA | 如果不超过(不>)则跳转 | 进位标志=1或0标志=1 | JBE | JA |
JE | 如果相等(=)则跳转 | 0标志=1 | JZ | JNE |
JNE | 如果不相等(<>)则跳转 | 0标志=0 | JNZ | JE |
3.3、使用有符号数比较的JCC指令
指 令 | 描 述 | 条 件 | 别 名 | 相反指令 |
JG | 如果大于(>)则跳转 | 符号标志=溢出标志或0标志=0 | JNLE | JNG |
JNLE | 如果小于或等于(<=)则跳转 | 符号标志=溢出标志或0标志=0 | JG | JLE |
JGE | 如果大于或等于(>=)则跳转 | 符号标志=溢出标志 | JNL | JGE |
JNL | 如果不小于(不<)则跳转 | 符号标志=溢出标志 | JGE | JL |
JL | 如果小于(<)则跳转 | 符号标志<>溢出标志 | JNGE | JNL |
JNGE | 如果大于或等于(>=)跳转 | 符号标志<>溢出标志 | JL | JGE |
JLE | 如果小于或等于(<=)跳转 | 符号标志<>溢出标志或0标志=1 | JNG | JNLE |
JNG | 如果不大于(不>)则跳转 | 符号标志<>溢出标志或0标志=1 | JLE | JG |
JE | 如果等于(=)则跳转 | 0标志=1 | JZ | JNE |
JNE | 如果不等于(<>)则跳转 | 0标志=0 | JNZ | JE |
以上就是本文的全部内容