汇编代码说明

时间:2013-11-20 17:56:06

标签: debugging assembly masm cpu-registers

我偶然发现了一个我无法解决的问题,也无法在网络上找到解决方案。 我在MASM中有一个简单的代码片段

abc dw 254, 255, 256
(...)
mov eax, dword PTR abc + 1

当我调试此代码时,在执行第二行后,我的eax寄存器显示0000FF00,我不明白为什么。 我知道dword ptr意味着数字应该被视为32位数字,我已经定义了16位序列。谁有人向我解释这个?

1 个答案:

答案 0 :(得分:2)

  

当我调试此代码时,在执行第二行后,我的eax寄存器显示0000FF00

代码正在从DWORD开始的地址中将EAX(4个字节)加载到abc + 1

让我们用十六进制写出数组内容:

00FEh, 00FFh, 0100h

或者,表示为字节:

0FEh, 00h, 0FFh, 00h, 00h, 01h

所以你得到DWORD形成的00h, 0FFh, 00h, 00h,当被解释为小端DWORD0000FF00h。{/ p>