Ошибка В Коде. Код Ниже.

TYMON

Member
19.06.2010
11
0
#1
Определить макрокоманду, выводящую на экран строку символов, имя которой передается в качестве аргумента, и написать программу, демонстрирующую применение макрокоманды.

Компилирую программу выдает ошибку zadacha.asm(27) OUT_STR(3) Undefined symbol: STR.
Не получается исправить эту ошибку. Подскажите пожалуйста решение проблемы?

<!--shcode--><pre><code class='assembler'>Out_str macro str
Push ax
Mov ah, 09h
Mov dx, offset str
Int 21h
Pop ax
Endm
MASM
MODEL small
STACK 256
.data
Out_str macro str
Push ax
Mov ah, 09h
Mov dx, offset str
Int 21h
Pop ax
endm

.code
ASSUME ds:mad:data,es:mad:data
main:
mov ax,@data
mov ds,ax
xor ax,ax
xor dx,dx
Out_str str
int 21h

exit:
mov ax,4c00h
int 21h
end main[/CODE]
 

lazybiz

Well-known member
03.11.2010
1 339
0
#2
Для того чтобы исправить ошибку, необходим определить саму строку str.

Добавлено:
Да и вообще у тебя каша какая-то.. В .data как раз должна строка str находится а не код.

Зачем очищать регистры до и вызывать прерывание после?<!--shcode--><pre><code class='assembler'>xor ax,ax
xor dx,dx
Out_str str
int 21h[/CODE]
 

dimwap

New member
18.01.2012
2
0
#3
Она тебе на чистом английском пишет: НЕ ОПРЕДЕЛЕНА STR.
Так и определи её. Создай в секции данных необходимое значение с адресом(меткой) str.

LAZYBIZ прав. нужно не макрос два раза повторять, а сделать что-то типа
.data
str: data "vyvodimaya stroka"