NEG在大会上

时间:2011-12-29 20:35:55

标签: assembly

neg 3BH

据我了解,我应该得到C5,但我得到C4(我将每个1切换为0,每个0切换为1)。有什么问题?

4 个答案:

答案 0 :(得分:10)

neg 计算二进制补码负值,而不是按位负数。您需要 not 指令,或者手动将其添加到答案中以获得所需结果。

答案 1 :(得分:1)

当你讲述这个故事的时候,似乎neg指令(在你正在使用的任何CPU上)有效地执行了带有FFH的3BH的xor以给出C4H。对于C4H结果,即3BH的补码,加1得到二进制补码。这将产生您想要的正确C5H值。有关一个和二个补码的概述,请看一下这个非常好的 Wikipedia article

答案 2 :(得分:0)

neg与减去0 - 数字相同,做到这一点你会得到数字的否定:0-3BH:

0-00111011:

00000000

11000100 +        1 +


11000101 = C5

答案 3 :(得分:0)

NEG 3Bh相当于找到2's complement  1,找到1's complement,更快的方法是从15减去(十六进制的F)。

      15 - 3 = 12 ->C (12 = C in hex)
      15 - 0Bh = 4h OR 15 - 11 = 4h
      then, add 1 to the result.
      C4 + 1 = C5h.

这是C5h的结果{/ 1}}。