赋值指令不为emu8086中的符号赋值

时间:2017-11-28 15:06:47

标签: assembly x86-16 emu8086

为什么以下代码不使用emu8086中的分配指令( = )为符号X分配新值:

.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

1 个答案:

答案 0 :(得分:4)

EMU8086有错误/缺陷。您对=指令如何工作的解释是correct

  

使用=指令定义的整数可以使用源代码中的其他值重新定义,但使用EQU定义的那些不能。

如果使用 MASM TASM 进行编译,则代码应按预期显示6而不是8

EMU8086多年来一直没有更新,我不相信它目前正在维护。它没有出现与产品相关的错误报告系统或与错误相关的电子邮件地址。

如果您正在寻找不使用EMU8086的原因,那么缺乏维护;已知的错误;和有限的BIOS和DOS Int 21h兼容性应该是找到其他工具来完成这项工作的原因。将32位和64位代码原生于您所使用的操作系统是一种更理想的方法。 EMU8086是一个很好的教学工具,但不应该用于任何认真的工作。