Jb 若小于则跳 jl 若小于则跳 有什么区别?jne或jnz 若不相等则跳(机器码75或0F85) jmp 无条件跳(机器码EB) Jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 j
Jb 若小于则跳 jl 若小于则跳 有什么区别?jne或jnz 若不相等则跳(机器码75或0F85) jmp 无条件跳(机器码EB) Jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 j
Jb 若小于则跳 jl 若小于则跳 有什么区别?
jne或jnz 若不相等则跳(机器码75或0F85)
jmp 无条件跳(机器码EB)
Jb 若小于则跳
ja 若大于则跳
jg 若大于则跳
jge 若大于等于则跳
jl 若小于则跳
jle 若小于等于则跳
pop 出栈
push 压栈
ja和jg都是大于则跳,他们又有什么区别呢?
请举例说明
Jb 若小于则跳 jl 若小于则跳 有什么区别?jne或jnz 若不相等则跳(机器码75或0F85) jmp 无条件跳(机器码EB) Jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 j
首先你要明白数的正负表示方法:
对于一个8位无符号数,取值范围是0-255(00-FFH);
对于一个8位有符号数,取值范围虽然同样是00-FFH,但定义:高位为1是负数,高位为0是正数.因此,从00-7FH是0~+127,从80H-FFH是-128~-1.
同样一个数可视为正也可视为负,关键看比较数据的方法.
ja 若大于则跳
Jb 若小于则跳 此2指令用于无符号数的比较;
jg 若大于则跳
jl 若小于则跳 此2指令用于带符号数的比较;
看如下一段指令及执行结果你就应该明白了:
-U100
0B41:0100 B081 MOV AL,81
0B41:0102 3C01 CMP AL,01
0B41:0104 7F0A JG 0110
0B41:0106 3C01 CMP AL,01
0B41:0108 7716 JA 0120
-r
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0100 NV UP EI NG NZ NA PO NC
0B41:0100 B081 MOV AL,81
-p
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0102 NV UP EI NG NZ NA PO NC
0B41:0102 3C01 CMP AL,01
-p
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0104 NV UP EI NG NZ NA PO NC
0B41:0104 7F0A JG 0110
-p
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0106 NV UP EI NG NZ NA PO NC
0B41:0106 3C01 CMP AL,01
-p
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0108 NV UP EI NG NZ NA PO NC
0B41:0108 7716 JA 0120
-p
AX=0081 BX=0000 CX=002E DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0120 NV UP EI NG NZ NA PO NC
0B41:0120 50 PUSH AX
-