所以我的书上说我可以定义字表所示:寻址存储器中的数据
表:DW“13,37,99,99”
和我可以通过将索引增加到表中的地址来捕获表中的值,如下所示:
mov ax,[table + 2];应该给我37
,而是它在斧头放在0x2c33而不是0x3337
这是因为在系统结构的差异?也许是因为这本书是为386而我正在运行686?
所以我的书上说我可以定义字表所示:寻址存储器中的数据
表:DW“13,37,99,99”
和我可以通过将索引增加到表中的地址来捕获表中的值,如下所示:
mov ax,[table + 2];应该给我37
,而是它在斧头放在0x2c33而不是0x3337
这是因为在系统结构的差异?也许是因为这本书是为386而我正在运行686?
0x2C是逗号,
而0x33是字符3
,它们出现在字符串中的位置2和3处,如预期的那样。 (我对你的期望有些困惑,因为你首先说“应该给我37”,后面说“而不是0x3337”。)
你已经定义了一个字符串常量,当我怀疑你没有不是说要。以下:
dw "13,37,99,99"
将产生以下的输出:
Offset 00 01 02 03 04 05 06 07 08 09 0A 0B
31 33 2C 33 37 2C 39 39 2C 39 39 00
为什么?这是因为:
'13,37,99,99'
)考虑到ax
包含两个字节,应该很清楚为什么ax
包含0x2C33
。
我怀疑你想沿着这个线路(不包括引号和我们使用db
指示我们宣布字节大小的数据,而不是dw
声明字大小的数据)为更多:
db 13,37,99,99
这仍然会给你0x6363
(ax
保持两个字节/转换为99,99为十六进制)。不知道你从哪里得到0x3337
。
我建议你自己安装一个hex editor并且有一个实验检查NASM的输出。