.MODEL小型程序集中数据的重复解析

时间:2017-10-17 04:24:06

标签: assembly

我是汇编语言的新手,我正在尝试创建一个简单的程序,用汇编语言添加数字。 当.MODEL是Tiny时,我确实成功启动了该程序,但该程序返回" Duplicate Declaration" .MODEL变为小时出错。

我理解这两种模式的定义,但我没有弄清楚会发生什么变化。

我做了什么尝试:

  • 我将数据名称更改为data1,它在SMALL中工作但在TINY中不起作用。
  • 我在.MODEL之后添加了代码.org 100h并且它有效,因为它使程序在近乎内存中运行(?)

我错过了什么概念?

提前谢谢

    .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

Screenshot of the error and the code.

1 个答案:

答案 0 :(得分:1)

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

换句话说:

汇编程序在段开始后隐式放置符号。你写道:

.DATA
...
.CODE
...

...汇编程序隐含地执行以下操作:

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

...因此,如果您在代码中使用标签DATA:,则定义两次!

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

  

当.MODEL是Tiny

时,我确实成功启动了该程序

不是绝对确定,但在"微小"记忆模型"隐含"我不需要谈论的标签。也许汇编程序在使用" tiny"时不会创建这样的标签。记忆模型。