奇怪的汇编语言加法

时间:2018-01-16 03:34:31

标签: assembly binary hex add cpu-registers

我最近一直在学习汇编语言,我遇到了一个我不理解的补充声明。

ebx=00000003;
esi=0FFFFFFFFh;
add ebx,esi
The Result was: ebx=00000002

这怎么可能? 有人可以解释我是如何进行添加的吗?

1 个答案:

答案 0 :(得分:4)

这是一个作为补充掩盖的减法 指令add ebx,esi在ESI中将值-1添加到EBX中3的值,结果为2

这是可能的,因为two complement binary addition

ebx=000000003h;   3
esi=0FFFFFFFFh;  -1
--------------;   +
ebx=000000002h;   2

通过从0FFFFFFFFh(-1)溢出到00000000h(0)来实现减法。