JE, JZ 结果相等时跳转、zf=1
JE
先把所有位置标志置0,然后
JZ 结果为零则跳转
这里用dtd他会把jz转换换成je
JNE, JNZ 结果不为零则跳转(不相等时跳转) 、zf=0
js 结果为负则跳转、SF=1
jns 结果为非负则跳转、SF=0
jp、jpe结果中1的个数为偶数则跳转
PF=1
这里指令简单我就不写了。
jnp、jpo 结果中1的个数为偶数则跳转、PF=0
jo 结果溢出了则跳转、OF=1
这里我们要结合这张图来说话
jno 结果没有溢出则跳转、OF=0
JB、JEAE 小于则跳转 (无符号数) CF=1
JNB,JAE 大于等于则跳转 (无符号数)、CF=0
JBE、JNA 小于等于则跳转 (无符号数)、CF=1 or ZF=1
JNBE, JA 大于则跳转(无符号数)、CF=0 and ZF=0
JL, JNGE
mov ah, 08AH ; -Not(8A-1) = -118 即当成有符号数时为-118
mov bh, 070H ; 有符号数时最高位为0为正数, 70H = 112
cmp ah, bh ;(ah)-(bh)实际得到的结果是1AH
; 在逻辑上,运算所应该得到的结果是:(-118)- 112 = -230
; sf记录实际结果的正负,所以sf=0
cmp ah, bh
(1)如果sf=1,而of=0 。 of=0说明没有溢出,逻辑上真正结果的正负=实际结果的正负; sf=1,实际结果为负,所以逻辑上真正的结果为负,所以(ah)<(bh)
(2)如果sf=1,而of=1: of=1,说明有溢出,逻辑上真正结果的正负≠实际结果的正负; sf=1,实际结果为负。
实际结果为负,而又有溢出,这说明是由于溢出导致了实际结果为负,,如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正。 这样,sf=1,of=1,说明了(ah)(bh)。
(3)如果sf=0,而of=1。of=1,说明有溢出,逻辑上真正结果的正负≠实际结果的正负;sf=0,实际结果非负。而of=1说明有溢出,则结果非0,所以,实际结果为正。
实际结果为正,而又有溢出,这说明是由于溢出导致了实际结果非负,如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必然为负。这样,sf=0,of=1,说明了(ah)<(bh)。
(4)如果sf=0,而of=0
of=0,说明没有溢出,逻辑上真正结果的正负=实际结果的正负;sf=0,实际结果非负,所以逻辑上真正的结果非负,所以(ah)≥(bh)。
JNL, JGE 大于等于则跳转 (有符号数) 、SF=OF
如果sf=1,而of=1: of=1,说明有溢出,逻辑上真正结果的正负≠实际结果的正负; sf=1,实际结果为负。
实际结果为负,而又有溢出,这说明是由于溢出导致了实际结果为负,,如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正。 这样,sf=1,of=1,说明了(ah)(bh)。
JLE, JNG 小于等于则跳转 (有符号数)、ZF=1 or SF≠ OF
JNLE, JG