汇编语言十六进制地址
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。
我刚开始学习汇编语言,我们正在处理十六进制地址。下面是我们的问题。我不确定它是如何加起来的。我知道答案是 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。