如何计算装配中的负数

Ela*_*lad 4 assembly

我是汇编的新手,我有一个关于如何表示负数的问题我有三个DWORDS变量,让我们说:

result DWORD 0
i DWORD 3
j DWORD 5
Run Code Online (Sandbox Code Playgroud)

我想计算这个公式:result = i - j + 8但是,当我执行ij时,结果将是一个非常高的数字因为符号所以我如何才能使结果正常?

GJ.*_*GJ. 9

对于32位DWORD,整数范围为-2147483648至2147483647或十六进制-0x80000000至0x7FFFFFFF.

所以数字-1出现像0xFFFFFFFF.(像柜台下溢)

如果设置了高(31)位,则该数字为负.要从负数(否定)中获得正数,您必须进行数字竞争并加1.

例:

    0xFFFFFFFE   //-2
xor 0xFFFFFFFF   //binary complement 
---------------
    0x00000001   //result of complement
+   0x00000001   //add 1
---------------
    0x00000002   //Result of negation is 2
Run Code Online (Sandbox Code Playgroud)