一、状态寄存器
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 |
以上就是本文的全部内容
7496

被折叠的 条评论
为什么被折叠?



