我对 MASM 程序集中的变量初始化有疑问。
如何将 2^32 初始化为变量以及应该初始化哪种变量?DWORD 还是 REAL4?
我尝试这样做:
val DWORD 2.0E+32
当我将 var 分配给一个寄存器(例如 mov eax,val)并尝试写入该值时,我看到的不是 2^32。我也试过用 REAL4 类型。结果还是一样。
那么我在这里做错了什么?
提前致谢...
我对 MASM 程序集中的变量初始化有疑问。
如何将 2^32 初始化为变量以及应该初始化哪种变量?DWORD 还是 REAL4?
我尝试这样做:
val DWORD 2.0E+32
当我将 var 分配给一个寄存器(例如 mov eax,val)并尝试写入该值时,我看到的不是 2^32。我也试过用 REAL4 类型。结果还是一样。
那么我在这里做错了什么?
提前致谢...
2^32 = 4294967296 = 0x100000000(即 8 个零)。
2.0E+32
是 2 * 10^32 = 2000000000000000000000000000000000,一个完全不同的数字。它也是一个浮点数,而0x100000000
它是一个整数。
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,但您可能会遇到精度问题。