我在指向一个地址时遇到了麻烦,并在我的情况下写了一个大小为byte的变量。这给了我错误“错误:无效的有效地址”:mov byte[AX], byte 0x0经过一些跟踪和错误后,我测试了相同但使用EAX。编译得很好:mov byte[EAX], byte 0x0我在这里错过了什么?
2 回答
MM们
TA贡献1886条经验 获得超2个赞
[AX] 是无效的内存操作数规范。
有效的16位是:
[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手册。
30秒到达战场
TA贡献1828条经验 获得超6个赞
使用时[bp+constant],[bp+si+constant]或者[bp+di+constant],最好记住所有这些寻址模式的默认段bp是ss(堆栈段),而不是ds(数据段),就像上面列出的所有其他寻址模式一样。
- 2 回答
- 0 关注
- 545 浏览
添加回答
举报
0/150
提交
取消