0
我想將值0移入存儲在ax中的地址(假設現在可寫入)。內存地址不會加載
mov ax, 0EC7 ; assume writable
mov BYTE [ax], 0
但是,NASM是給我這個錯誤:
錯誤:無效的有效地址
任何想法?
我想將值0移入存儲在ax中的地址(假設現在可寫入)。內存地址不會加載
mov ax, 0EC7 ; assume writable
mov BYTE [ax], 0
但是,NASM是給我這個錯誤:
錯誤:無效的有效地址
任何想法?
16位尋址模式非常有限。您可以使用(可選)偏移量(一個普通數字)和一個(可選)基址寄存器(bx
或bp
)以及一個(可選)索引寄存器(si
或di
)。而已。
在32位的尋址模式,任何寄存器可以是一個基址寄存器和任何寄存器但esp
可以是一個索引寄存器。 32位尋址還引入了一個(可選的)比例(1,2,4或8),以便與變址寄存器相乘。
[eax]
將工作 - 即使在16位代碼。彙編程序生成一個「地址大小覆蓋前綴」字節(0x67)。如果eax
中的值超過了段限制(通常爲64k),則會生成一個異常(不在真正的DOS中處理 - 它只是掛起),因此請小心。
請嘗試使用'eax'來代替?或'mov BYTE PTR'。 – Blorgbeard
謝謝!似乎正在工作.. – phyrrus9