Aht*_*ham 6 assembly x86-16 emu8086
为什么以下代码不X使用emu8086中的Assignment Directive(=)为符号赋值:
.model small
.data
X = 8
.code
.startup
mov ax, @data
mov ds, ax
mov bx, X
X = 6
mov bx, X
mov ah, 02h
mov dx, bx
add dx, 48
int 21h ; It should display 6 but instead it display 8.
mov ah, 04ch
int 21h
end
Run Code Online (Sandbox Code Playgroud)
EMU8086 有一个错误/缺陷。您对该=指令如何运作的解释是正确的:
使用 = 指令定义的整数可以使用源代码中的另一个值重新定义,但使用 EQU 定义的整数则不能。
如果您使用MASM或TASM编译此代码,则代码应该按您的预期工作,显示6而不是8.
EMU8086 已经很多年没有更新了,我不相信它目前正在维护。似乎没有与该产品关联的错误报告系统或与错误相关的电子邮件地址。
如果您正在寻找不使用EMU8086的理由,那么就是缺乏维护;已知的错误;BIOS 和 DOS Int 21h 兼容性有限应该是寻找其他工具来完成这项工作的原因。为您所在的操作系统编写本机 32 位和 64 位代码是一种更理想的方法。EMU8086 是一个很好的教学工具,但不应该用于任何严肃的工作。