条件跳转表
直接转移指令
指令格式
机器码
测试标志
条件说明
符号
JO OPR
70
OF=1
结果有溢出
JNO OPR
71
OF=0
结果无溢出
JC OPR
72
CF=1
小于
<
JNC OPR
73
CF=0
大于或等于
>=
JZ/JE OPR
74
ZF=1
结果为0
==
JNZ/JNE OPR
75
ZF=0
结果非0
!=
JS OPR
78
SF=1
结果为负
<0
JNS OPR
79
SF=0
结果为正
>0
JP/JPE OPR
7A
PF=1
结果中1的个数为偶数
JNP/JPO OPR
7B
PF=0
结果中1的个数为奇数
间接转移指令-无符号数
指令格式
机器码
测试标志
条件说明
符号
JB/JNAE OPR
72
CF=1
低于/不高于且不等于
<
JNB/JAE OPR
73
CF=0
不低于/高于或等于
>=
JBE/JNA OPR
76
(CF=1)|(ZF=1)
低于或等于/不高于
<=
JNBE/JA OPR
77
(CF=0)&(ZF=0)
不低于且不等于/高于
>
间接转移指令-有符号数
指令格式
机器码
测试标志
条件说明
符号
JL/JNGE OPR
7C
(SF^OF)=1
小于/不大于且不等于
<
JNL/JGE OPR
7D
(SF^OF)=0
不小于/大于或等于
>=
JLE/JNG OPR
7E
(SF^OF)=1|(ZF=1)
小于或等于/不大于
<=
JNLE/JG OPR
7F
(SF^OF)=0&(ZF=0)
不小于且不等于/大于
>
理解方法:
N: Not
E: Equal
A: Above
B: Below
L: Less (Little的比较级)
G: Greater (Great的比较级)
Less Than : 小于
Greater Than: 大于
(SF^OF)=1 --> SF=0,OF=1 --> a < b SF=1,OF=0 --> a < b
(SF^OF)=0 --> SF=1,OF=1 --> a > b
SF=0,OF=0 --> a >= b
条件跳转指令是根据标志寄存器中的相关标志位的值来进行跳转的,因此,条件跳转指令只能与那些能够影响标志寄存器的相关标志位的指令配合使用;
能够直接影响标志寄存器的相关标志位的指令有:
1、算术运算指令 : add、sub、adc、sbb、inc、dec、neg、mul、div、imul、idiv,等等;
2、按位逻辑运算 : and、or、xor、not,等等;
3、比较运算指令 : cmp、test;
4、移位操作指令 : shr、shl、sar、sal、ror、rol、rcr、rcl;
5、BCD数调整指令: aaa、aas、daa、das、aam、aad;
6、标志处理指令 : clc、stc、cmc、cld、std、cli、sti;
能够间接影响标志寄存器的相关标志位的指令序列有:
pushf --> pop eax --> modify eax --> push eax --> popf
即:
pushf
pop eax
modify eax
push eax
popf
jbe OPR
这样的一系列操作之后,条件转移指令"jbe OPR"也可以根据标志寄存器的相关标志位进行转移;
手机扫一扫
移动阅读更方便
你可能感兴趣的文章