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'