我正在尝试使用 A86 为 8086 汇编一些代码。我将问题缩小到 4 行代码。
MOV BX, testz
ADD AL, [testz]
INT 20h
testz:
~ ^
#ERROR 16: Definition Conflicts With Forward Reference @@@@#
db ?
Run Code Online (Sandbox Code Playgroud)
你认为这段代码有什么问题?我将地址本身移动到 BX 寄存器并将 testz 地址中的字节值添加到 AL。
在一个更大的程序中,我也得到了#ERROR 13: Byte/Word Combination Not Allowed.
但是label是一个字 where[label]是一个字节。为什么我的编译器不能区分这些?
ADD BL, [second]
MOV BX, second
~ ^
#ERROR 13: Byte/Word Combination Not Allowed
second:
~ ^
#ERROR 16: Definition Conflicts With Forward Reference @@@@#
db ?
Run Code Online (Sandbox Code Playgroud)
因为我看不到任何字节/字冲突。
我的编译器同等地解释 offset testz 和 …