这套指令会跳吗?

时间:2014-04-13 07:43:36

标签: assembly x86 flags

这套指令会跳吗? 我主要担心的是CMP表达式。 CMP只处理无符号数吗?如果是这样它会跳转,因为Zero标志已经设置好了。否则它不会跳,因为数字是特别不同的。

   mov  ax, -127d
   cmp  ax, 128d
   je   Target

2 个答案:

答案 0 :(得分:4)

平等是没有迹象的。

-127 = FF81 = 65409
 128 = 0080 =   128

不相等的数字在签名和无符号解释中都是不相等的。这直接来自以下事实:减法与有符号和无符号的过程相同 - 因为它是相同的过程,它可以对于相同的输入,对于一个解释导致0而对于0来说不是-0另一个。

答案 1 :(得分:1)

cmp实际上同时处理有符号和无符号算术。在cmp执行溢出后,进位,符号和零标志都将被适当地设置:这些标志的任何解释都取决于随后的条件指令。

例如jz / jnz对符号不敏感,ja/jb表示无符号比较,jl/jg表示签名比较。有关条件代码的(详细)详细信息,请参阅x86手册。