2010-11-23 31 views
3

负数我在组装一个新手,我有一个关于如何表示负数 我有三个变量DWORDS问题,让说:如何计算装配

result DWORD 0 
i DWORD 3 
j DWORD 5 

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

+1

你说的 “OK” 是什么意思?你称之为“高数量”是合适的结果。 – 2010-11-23 19:48:37

回答

8

对于32位DWORD,整数范围从-2147483648到2147483647或十六进制-0x80000000到0x7FFFFFFF。

所以数字-1就像0xFFFFFFFF一样。 (如计数器下溢)

如果设置了高位(31),则该数字为负数。为了使从负(否定)正数,你必须做出一些compement再加1

例子:

0xFFFFFFFE //-2 
xor 0xFFFFFFFF //binary complement 
--------------- 
    0x00000001 //result of complement 
+ 0x00000001 //add 1 
--------------- 
    0x00000002 //Result of negation is 2 
0

注意:

如果比较两个整数使用其他跳转命令不是比较绝对数字:

比较绝对数字:

jg (jump if greater) 
jl (jump if less) 

比较整数(可以是正或负):

ja (jump if greater) 
jb (jump if less)