我在指向地址并在我的情况下写入字节大小的变量时遇到问题。这给了我错误“错误:无效的有效地址”:
mov byte[AX], byte 0x0
经过一番尝试和错误后,我测试了相同的结果,但使用的是 EAX。这编译得很好:
mov byte[EAX], byte 0x0
我在这里缺少什么?
[AX]
是无效的内存操作数规范。
有效的 16 位是 https://en.wikipedia.org/wiki/X86#Addressing_modes:
[constant]
[BX]
[SI]
[DI]
[BX+constant]
[BP+constant]
[SI+constant]
[DI+constant]
[BX+SI]
[BX+DI]
[BP+SI]
[BP+DI]
[BX+SI+constant]
[BX+DI+constant]
[BP+SI+constant]
[BP+DI+constant]
[BP]在形式上是无效的,但许多汇编器会悄悄地将其转换为[BP+0]。
有关内存操作数编码以及 ModR/M 和 SIB 字节的信息,请参阅 CPU 手册。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)