我最近一直在学习汇编语言,我遇到了一个我不明白的add语句。
ebx=00000003;
esi=0FFFFFFFFh;
add ebx,esi
The Result was: ebx=00000002
这怎么可能? 有人可以解释一下添加是如何发生的吗?
最佳答案
这是一个伪装成加法的减法。
指令 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
) 的溢出来实现的。
关于assembly - 奇怪的汇编语言添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273715/