汇编语言十六进制地址



我刚刚开始学习汇编语言,我们正在使用十六进制地址。下面是我们的一个问题。不过我不确定它是怎么加起来的。我知道答案是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)表示"Y值的X字节"。因此,下一个数据项的偏移量是0x2028,因为小数点24是0x18十六进制。

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

或者,你可以把这三个长度加在一起,得到44。十六进制中的44将是0x2C。

最新更新