新人小白,求大佬解决
本帖最后由 摸堡 于 2025-11-19 14:52 编辑mov ax,1000
mov ds,ax
mov ax, 这条语句提示我无效的寄存器
E R R O R - - 09E7 Invalid register combination
用的是最新的dosbox 和小甲鱼提供的debug32 Win11 欢迎新人小白!别担心,这个问题很常见,我来帮你一步步解决。
你的汇编代码中,第三行 `mov ax,` 提示“无效的寄存器”,是因为 mov 指令需要两个操作数:一个目标操作数(比如寄存器)和一个源操作数(比如数字或其他寄存器)。但你的第三行只写了目标操作数 ax,却没有指定源操作数,所以汇编器无法识别。
这是你的代码:
mov ax,1000
mov ds,ax
mov ax, ; 这里缺少源操作数,导致错误
要修复它,你需要在 `mov ax,` 后面添加一个有效的源操作数。例如:
- 如果你想移动一个数字到 ax:
mov ax, 2000 ; 将数字2000移动到ax
- 或者从另一个寄存器移动值:
mov ax, bx ; 将bx寄存器的值移动到ax
请根据你的实际需求补充完整语句。如果还有其他问题,随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 坑在「工具」上,不在指令上。
mov ax,1000
mov ds,ax
mov ax, ; 这里报 09E7 Invalid register combination
真正的 8086 / 微软原版 debug.exe 里,mov ax, 是合法指令,意思是「把 DS 段内偏移地址为 0 的一个字(word)读到 AX」。
但是:debug32.exe 本身不支持这种写法,会直接报 09E7 Invalid register combination,这已经是一个老问题了。
换成微软原版 debug.exe(推荐)
找一个 32 位 Windows(比如 Win7/XP)里的 debug.exe,或者从网上下载课程配套的那一份。
在 DOSBox 里运行这个原版 debug.exe,而不是运行 debug32.exe。
再输入:
mov ax,1000
mov ds,ax
mov ax,
就不会再报错了。 不二如是 发表于 2025-11-19 15:05
坑在「工具」上,不在指令上。
我去找一下,感谢
页:
[1]