汇编内存图验证
Assembly Memory Diagram Verification
鉴于此数据,
.data
Alpha WORD 0022h, 45h
Beta BYTE 56h
Gamma DWORD 4567h
Delta BYTE 23h
假设数据段从0x00404000开始,谁能验证这个table有多正确?
Address Variable Data
00404000 Alpha 22
00404001 Alpha + 1 00
00404002 Alpha + 2 45
00404003 Beta 56
00404004 Gamma 67
00404005 Gamma+1 45
00404006 Delta 23
如果不知道相关处理器的寻址(以及汇编程序如何查看寻址),则无法回答。尽管如此,您需要一个非常不寻常的系统才能使其正确。
Alpha 被定义为 "word" 类型。您将第一个单词显示为分配两个字节(相当合理),但第二个单词只分配一个字节。这不太合理——一个字可能是一个字节,也可能是两个字节,但它的大小通常至少是一致的。
目前,我们假设一个字是两个字节,一个双字是四个字节。在那种情况下,我希望更像:
Alpha 22h
alpha+1 00h
alpha+2 45h
Alpha+3 00h
Beta 56h
Gamma 67h
Gamma+1 45h
Gamma+2 00h
Gamma+3 00h
Delta 23h
鉴于此数据,
.data
Alpha WORD 0022h, 45h
Beta BYTE 56h
Gamma DWORD 4567h
Delta BYTE 23h
假设数据段从0x00404000开始,谁能验证这个table有多正确?
Address Variable Data
00404000 Alpha 22
00404001 Alpha + 1 00
00404002 Alpha + 2 45
00404003 Beta 56
00404004 Gamma 67
00404005 Gamma+1 45
00404006 Delta 23
如果不知道相关处理器的寻址(以及汇编程序如何查看寻址),则无法回答。尽管如此,您需要一个非常不寻常的系统才能使其正确。
Alpha 被定义为 "word" 类型。您将第一个单词显示为分配两个字节(相当合理),但第二个单词只分配一个字节。这不太合理——一个字可能是一个字节,也可能是两个字节,但它的大小通常至少是一致的。
目前,我们假设一个字是两个字节,一个双字是四个字节。在那种情况下,我希望更像:
Alpha 22h
alpha+1 00h
alpha+2 45h
Alpha+3 00h
Beta 56h
Gamma 67h
Gamma+1 45h
Gamma+2 00h
Gamma+3 00h
Delta 23h