2013-04-03 19 views
-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 

я ставлю в ошибках в комментарияхЯ должен исправить эту сборку код так, чтобы он выводит строку «строка», но я получаю все виды ошибок

ответ

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 (там нет такой этикетки в вашем коде).