汇编语言十六进制地址

Assembly Language hex address

我刚开始学习汇编语言,我们正在处理十六进制地址。下面是我们的问题。我不确定它是如何加起来的。我知道答案是 0x202C,但我们是如何到达那里的呢?您能以最基本的方式帮助我逐步解释这些过程吗?谢谢!!


以下数据段从内存地址 0x2000(十六进制)开始

.data
printString BYTE "Assembly is fun",0
moreBytes BYTE 24 DUP(0)
dateIssued DWORD ?
dueDate DWORD ?

dueDate的十六进制地址是多少?

您有三个数据定义要加在一起:

printString 是后跟零字节的 ASCII 文本。字符串部分的长度为 15 个字节,最后一个零字节构成 16。因此下一个数据项的偏移量为 0x2010(十进制的 16 为十六进制的 0x10)。 printString从0x2000开始,下一个从printString的最后一个字节开始,所以你必须将它的长度加上它的偏移量才能得到下一个偏移量。

moreBytes 是 24 个字节长,因为 DUP 就是这样工作的。 BYTE x DUP (y) 表示 "X bytes of value Y"。所以下一个数据项的偏移量是 0x2028,因为 24 十进制是 0x18 十六进制。

dateIssued 是 4 个字节长,因为这是 DWORD 的定义。所以下一个在 0x0x2C,因为 8+4=12,这是十六进制表示法中的 0xC。

或者,您可以将三个长度相加,得到 44。十六进制的 44 将是 0x2C。