如何获得一个寄存器以及语法存储偏移值?

时间:2016-02-05 16:00:04

标签: assembly gas att x86-16

我用它来写入视频内存(%es = 0xb800):

movw $0x074b,%es:(0x0)

但是,如果我希望偏移量在%ax?

,该怎么办?

我尝试了%es:%ax%es:(%ax),但没有任何效果,而且我一直都会遇到错误。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

在16位模式下,您可以使用可用的地址格式。您无法使用%ax解决问题。有效表格是:

  • 可选bxbp中的一个,加上
  • 可选sidi中的一个,加上
  • 可选择恒定位移

因此,movw $0x074b, %es:(%di)可以起作用。另见表2-1。官方英特尔®64和IA-32架构软件开发人员手册第2卷:指令集参考,A-Z 中带有ModR / M字节的16位寻址表

PS:下次显示你有什么错误。