所以我的書上說我可以定義字表所示:尋址存儲器中的數據
表: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的輸出。