【发布时间】:2016-02-05 16:00:03
【问题描述】:
我正在使用它来写入视频内存(%es = 0xb800):
movw $0x074b,%es:(0x0)
但是,如果我希望偏移量为 %ax 怎么办?
我尝试了%es:%ax 或%es:(%ax),但没有任何效果,而且我不断收到错误。
我做错了什么?
【问题讨论】:
标签: assembly gnu-assembler att x86-16
我正在使用它来写入视频内存(%es = 0xb800):
movw $0x074b,%es:(0x0)
但是,如果我希望偏移量为 %ax 怎么办?
我尝试了%es:%ax 或%es:(%ax),但没有任何效果,而且我不断收到错误。
我做错了什么?
【问题讨论】:
标签: assembly gnu-assembler att x86-16
在 16 位模式下,可用地址形式受到限制。您无法使用%ax 寻址。有效的表格是:
bx 或bp 之一,加上si 或di 之一,加上因此,例如,movw $0x074b, %es:(%di) 会起作用。另见表 2-1。官方英特尔® 64 和 IA-32 架构软件开发人员手册第 2 卷:指令集参考,A-Z
PS:下次显示你遇到了什么错误。
【讨论】: