Memory 内存地址无法加载

Memory 内存地址无法加载,memory,assembly,Memory,Assembly,我正在尝试将值0移动到ax中存储的地址中(假设该地址现在是可写的) 但是,nasm给了我这个错误: 错误:无效的有效地址 有什么想法吗?16位寻址模式非常有限。您可以使用(可选)偏移量(普通数字),加上(可选)基址寄存器(bx或bp),再加上(可选)索引寄存器(si或di)。就这样 在32位寻址模式下,任何寄存器都可以是基址寄存器,任何寄存器都可以是索引寄存器,但esp可以是索引寄存器。32位寻址还引入了一个(可选)比例(1、2、4或8)与索引寄存器相乘 [eax]即使在16位代码中也能工作。汇

我正在尝试将值0移动到ax中存储的地址中(假设该地址现在是可写的)

但是,nasm给了我这个错误:

错误:无效的有效地址


有什么想法吗?

16位寻址模式非常有限。您可以使用(可选)偏移量(普通数字),加上(可选)基址寄存器(
bx
bp
),再加上(可选)索引寄存器(
si
di
)。就这样

在32位寻址模式下,任何寄存器都可以是基址寄存器,任何寄存器都可以是索引寄存器,但
esp
可以是索引寄存器。32位寻址还引入了一个(可选)比例(1、2、4或8)与索引寄存器相乘


[eax]
即使在16位代码中也能工作。汇编程序生成一个“地址大小覆盖前缀”字节(0x67)。如果
eax
中的值超过了段限制(通常为64k),将生成异常(在实际DOS中未处理-它只是挂起),因此请小心。

尝试改用
eax
?或
mov BYTE PTR
。谢谢!好像在工作。。
mov ax, 0EC7 ; assume writable
mov BYTE    [ax], 0