End begin
Cseg ends
Begin endp
Ret
Promt mes2 ; вывод второго сообщения
Promt mes1 ; вывод первого сообщения
Begin proc far
Data ends
Stack ends
Endm
Int 21h
Mov ah, 09h
Lea dx, mes
Promt macro mes
Пример программы, использующей макрокоманды
Особенности трансляции при получении объектного модуля
Если в тексте программы указать имя (макрокоманду), то будет выполнен код макроопределения с учетом фактических параметров.
ENDM
1. Происходит вставка макрорасширений в то место программы, где находятся макрокоманды.
2. Формируется модуль с расширением .obj.
Длина самой программы может оказаться в несколько раз больше, чем исходной, т.к. в программу вставляются макрорасширения.
Где можно разместить макроопределение?
1. В тексте модуля, но до объявления сегментов.
2. В отдельном файле, который создает программист. Этот файл должен быть вставлен транслятором с помощью директивы INCLUDE <имя>.
3. Использование макробиблиотек.
stack segment para stack 'stack'
dw 32 dup(?)
data segment para 'data'
mes1 db 'test of macro', '$'
mes2 db 'assembler', '$'
cseg segment para 'code'
…
…