大会x86标志标志

时间:2015-05-10 06:44:37

标签: assembly x86

为什么以下说明会设置标志标志?

mov al,0FEh
sub al,2

根据我的理解,AL寄存器可以保持2 ^ 8 - 1或255. 0FEh = 254十进制。减去2叶子252.这似乎是积极的。

(对于那些刚接触汇编/二进制算术的人,下面可能会澄清接受的答案)

dec = bin
254 = 1111 1110
      0000 0001 <- inverted bits
      0000 0001 <- add 1
      0000 0010 <- two's complement value (happens to = -2 --
                   this has nothing to do with the name two's complement)

1 个答案:

答案 0 :(得分:4)

符号标志假定操作数被视为带符号(2&#39; s补码)值。

在AL的情况下,这意味着它被视为从-128到+127的保持值。

0feh,当被视为有符号时,8位数量表示-2。减去2给出0fch,(再次,作为有符号的8位数量)是-4。

当/如果选择,您可以将AL视为保持值从0到255.但是,当您这样做时,您将AL视为无符号。当您处理无符号值时,您通常会忽略符号标记 - 它与无符号算术无关。