IA-32装配中的变量初始化

时间:2008-11-18 05:17:39

标签: assembly

我对MASM程序集中的变量初始化有疑问。

如何将2 ^ 32初始化为变量以及应该初始化哪种变量? DWORD还是REAL4?

我尝试这样做:

val DWORD 2.0E+32

当我将var分配给寄存器(例如mov eax,val)并尝试写入值时,我看到的东西不是2 ^ 32。我也试过REAL4类型。结果仍然相同。

那我在这里做错了什么?

提前致谢...

2 个答案:

答案 0 :(得分:3)

2 ^ 32 = 4294967296 = 0x100000000(即8个零)。

2.0E+32 是2 * 10 ^ 32 = 200000000000000000000000000000000,完全不同的数字。它也是一个浮点数,而 0x100000000 是一个整数。

答案 1 :(得分:2)

2 ^ 32比dword支持的数字大一点,让我抛出一些范围:

0 <= dword < 2^32
0 <= qword < 2^64
-2^31 <= sdword < 2^31
-2^63 <= sqword < 2^63

如果REAL4是一个4字节的浮点,那么它的结构与整数的结构完全不同。如果使用x86,那么表示格式浮点可能是IEEE 754。它支持2 ^ 32 -number但你可能遇到精度问题。