为了账号安全,请及时绑定邮箱和手机立即绑定

NASM x86 16位寻址模式

NASM x86 16位寻址模式

HUH函数 2019-09-06 15:41:21
我在指向一个地址时遇到了麻烦,并在我的情况下写了一个大小为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手册。


查看完整回答
反对 回复 2019-09-06
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

使用时[bp+constant],[bp+si+constant]或者[bp+di+constant],最好记住所有这些寻址模式的默认段bp是ss(堆栈段),而不是ds(数据段),就像上面列出的所有其他寻址模式一样。

查看完整回答
反对 回复 2019-09-06
  • 2 回答
  • 0 关注
  • 515 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信