neg 3BH
据我了解,我应该得到C5
,但我得到C4
(我将每个1切换为0,每个0切换为1)。有什么问题?
答案 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}}。