-1
.model tiny
.code 
Start:
CLEAR:
mov cx, 80*25
mov ax, 7120h
sub bx,bx
l: mov es:[bx],ax
add bx, 2
loop l
str db 'string', 0 ; reserved word used as symbol : str 
mov DI, ? ; position y*160 + x*2
mov aH, 03
sub Si, Si; index
L: mov al, STR[SI] ; symbol already defined elsewhere: l
   mov es, [DI], ax ; extra characters on line
oR aL, AL
JZ done ; undefined symbol: done
ADD DI, 2
JMP L
end start 

我把错误作为评论

4

1 回答 1

2
str db 'string', 0 ; reserved word used as symbol : str 

然后使用与 不同的名称str。顺便说一句,你不能像这样在代码中间放置数据。如果你这样做了,你将不得不跳过它,这样处理器就不会像指令一样尝试执行你的数据。

L: mov al, STR[SI] ; symbol already defined elsewhere: l

您已经有一个名为 的标签l,并且您的汇编程序在符号名称方面显然不区分大小写。选择一个不同的名称,最好是比 . 更具描述性的名称L

mov es, [DI], ax ; extra characters on line

应该是es:[,不是es, [

JZ done ; undefined symbol: done

正是它所说的意思:您没有用名称定义任何符号done(您的代码中没有这样的标签)。

于 2013-04-03T16:19:08.870 回答