我是汇编的新手,我有一个关于如何表示负数的问题我有三个DWORDS变量,让我们说:
result DWORD 0
i DWORD 3
j DWORD 5
Run Code Online (Sandbox Code Playgroud)
我想计算这个公式:result = i - j + 8但是,当我执行ij时,结果将是一个非常高的数字因为符号所以我如何才能使结果正常?
对于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)