.MODEL SMALL 程序集中的重复数据声明

Duplicate Declaration of Data in .MODEL SMALL Assembly

我是汇编语言的新手,正在尝试创建一个简单的程序来用汇编语言添加数字。 当 .MODEL 为 Tiny 时,我确实成功启动了程序,但是当 .MODEL 更改为 small 时,程序 returns“重复声明”错误。

我理解这两个模型的定义,但我没弄清楚有什么变化。

我尝试了什么:

我错过了什么概念?

提前致谢

    .MODEL TINY

.DATA
data DB 10D, 11D, 12D, 13D, 14D, 15, 16D, 17D, 18D, 19D
.CODE
.STARTUP
XOR AX, AX
MOV BX, OFFSET data
MOV CX, 5
ulang:
ADD AX, [BX]
INC BX
LOOP ulang
.EXIT
END

问题是数据段还有一个符号名称——令人惊讶的是——DATA

换句话说:

汇编程序隐式地将符号放在段的开头之后。你写:

.DATA
...
.CODE
...

... 并且汇编程序隐含地执行类似的操作:

.DATA
DATA:
...
.CODE
CODE:
...

... 所以如果在代码中使用标签 DATA: ,它会被定义两次!

请注意,您不能 "just" 使用隐式生成的这些标签,因此您必须使用其他名称,例如 DATA1

I did succeed in launching the program when the .MODEL is Tiny

不太确定,但在 "tiny" 内存模型中不需要我所说的 "implicit" 标签。也许汇编程序在使用 "tiny" 内存模型时根本不会创建这样的标签。