资讯详情

x86汇编_无符号与有符号跳转_笔记_35

无符号跳转
JA 大于跳转(如果 leftOp > rightOp) Jump if left Above right
JNBE 不小于或等于跳(和) JA 相同) Jump if left Not Below or Equal right
JB 如果 leftOp < rightOp) Jump if left Below right
JNAE 不大于或等于跳(和) JB 相同) Jump if left Not Above or Equal right
JAE 大于或等于跳转(如果 leftOp ≥ rightOp) Jump if left Above or Equal right
JNB 不少于跳转(和 JAE 相同) Jump if left Not Below right
JBE 小于或等于跳转(如果 leftOp ≤ rightOp) Jump if left Below or Euqal right
JNA 不大于跳转(和 JBE 相同) Jump if left Not Above right

有符号比较跳转
JG 大于跳转(若 leftOp > rightOp) Jump if left Greater than right
JNLE 不小于或等于跳转(与 JG 相同) Jump if left Not Less than or Equal right
JL 小于跳转(若 leftOp < rightOp) Jump if left Less than right
JNGE 不大于或等于跳转(与 JL 相同) Jump if left Not Greater than or Euqal right
JLE 小于或等于跳转(若 leftOp ≤ rightOp) Jump if left Less than or Euqal right
JNG 不大于跳转(与 JLE 相同) Jump if left Not Greater than right
JGE 大于或等于跳转(若 leftOp ≥ rightOp) Jump if left Greater than or Equal right
JNL 不小于跳转(与 JGE 相同) Jump if left Not Less than right

由以上内容可以总结出,Greater / Less用于描述有符号的比较,Above / Below用于表示无符号的比较,Equal则通用。

以下例子是有符号比较与无符号比较的基本特点。

7Fh=01111111,80h=10000000。

无符号比较实际上是直接比较二进制数大小,所以7Fh<80h。

有符号数按照补码规则,01111111=+127,10000000=-128,所以7Fh>80h。

mov al, +127          ;十六进制数值 7Fh
cmp al, -128          ;十六进制数值 80h
ja L1:                ;不跳转,因为无符号 7Fh < 80h
jg L2:                ;跳转,因为有符号 +127 > -128
nop
nop
nop
L1:nop
L2:nop

示例 1:

mov edx,-1
cmp edx, 0
jnl  L5                   ;不发生跳转(-1 ≥ 0 为假)
jnle L5                  ;不发生跳转(-1 > 0 为假)
jl L1                      ;跳转(-1 < 0 为真)

示例2:

mov bx, +32
cmp bx, -35
jng L5                 ;不发生跳转( + 32 ≤ -35 为假)
jnge L5               ;不发生跳转( + 32 < -35 为假)
jge L1                 ;跳转( + 32 ≥ -35 为真)

示例3:

mov ecx, 0
cmp ecx, 0
jg L5                     ;不发生跳转(0 > 0 为假)
jnl L1                    ;跳转(0 ≥ 0 为真)

示例4:

mov ecx, 0
cmp ecx, 0
jl L5                      ;不发生跳转(0 < 0 为假)
jng L1                   ;跳转(0 ≤ 0 为真)

标签: tr35jbe0330电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台