汇编语言十六进制地址

问题描述 投票:0回答:1

我才刚刚开始学习汇编语言,我们正在使用十六进制地址。以下是我们的问题。我不确定它是如何累加的。我知道答案是0x202C,但我们如何到达那里?您能以最基本的方式帮助我逐步了解流程吗?谢谢!


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

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

dueDate的十六进制地址是什么?

hex
1个回答
0
投票

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

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。

© www.soinside.com 2019 - 2024. All rights reserved.