我是集会的新手,我有一个关于如何表示负数的问题 我有三个DWORDS变量,让我们说:
result DWORD 0
i DWORD 3
j DWORD 5
我想计算这个公式:result = i - j + 8 但是,当我做i-j时,由于符号,结果将是一个非常高的数字 那么如何才能使结果正常呢?
答案 0 :(得分:8)
对于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
答案 1 :(得分:0)
注意:
如果比较两个整数,则使用其他跳转命令而不是比较绝对数字:
比较绝对数字:
jg (jump if greater)
jl (jump if less)
比较整数(可以是负数或正数):
ja (jump if greater)
jb (jump if less)
答案 2 :(得分:0)
负数在汇编中的Two补码中表示。为了获得数字的二进制补码,您有两个选择: