我偶然发现了一个我无法解决的问题,也无法在网络上找到解决方案。 我在MASM中有一个简单的代码片段
abc dw 254, 255, 256
(...)
mov eax, dword PTR abc + 1
当我调试此代码时,在执行第二行后,我的eax寄存器显示0000FF00,我不明白为什么。 我知道dword ptr意味着数字应该被视为32位数字,我已经定义了16位序列。谁有人向我解释这个?
答案 0 :(得分:2)
当我调试此代码时,在执行第二行后,我的eax寄存器显示0000FF00
代码正在从DWORD
开始的地址中将EAX
(4个字节)加载到abc + 1
。
让我们用十六进制写出数组内容:
00FEh, 00FFh, 0100h
或者,表示为字节:
0FEh, 00h, 0FFh, 00h, 00h, 01h
所以你得到DWORD
形成的00h, 0FFh, 00h, 00h
,当被解释为小端DWORD
时0000FF00h
。{/ p>