负数我在组装一个新手,我有一个关于如何表示负数 我有三个变量DWORDS问题,让说:如何计算装配
result DWORD 0
i DWORD 3
j DWORD 5
,我想计算这个公式:result = i - j + 8 但是,当我做ij时,结果将是一个非常高的数字,因为符号为 ,所以我如何才能使结果正确呢?
负数我在组装一个新手,我有一个关于如何表示负数 我有三个变量DWORDS问题,让说:如何计算装配
result DWORD 0
i DWORD 3
j DWORD 5
,我想计算这个公式:result = i - j + 8 但是,当我做ij时,结果将是一个非常高的数字,因为符号为 ,所以我如何才能使结果正确呢?
对于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
注意:
如果比较两个整数使用其他跳转命令不是比较绝对数字:
比较绝对数字:
jg (jump if greater)
jl (jump if less)
比较整数(可以是正或负):
ja (jump if greater)
jb (jump if less)
你说的 “OK” 是什么意思?你称之为“高数量”是合适的结果。 – 2010-11-23 19:48:37