Определение таких макрокоманд, как INIT1 и INIT2 и одноразовое их использование в программе кажется бессмысленным. Лучшим подходом здесь является каталогизация собственных макрокоманд в библиотеке на магнитном диске, используя любое описательное имя, например, MACRO.LIB:
INIT MACRO CSNAME,DSNAME,SSNAME .
.
ENDM PROMPT MACRO MESSGE .
.
ENDM
Теперь для использования любой из каталогизированных макрокоманд вместо MACRO определения в начале программы следует применять директиву INCLUDE:
INCLUDE C:MACRO.LIB .
.
INIT CSEG,DATA,STACK
В этом случае Ассемблер обращается к файлу MACRO.LIB (в нашем примере) на дисководе C и включает в программу оба макроопределения INIT и PROMPT.
Хотя в нашем примере требуется только INIT. Ассемблерный листинг будет содержать копию макроопределения, отмеченного символом C в 30 колонке LST-файла.
Следом за макрокомандой идет ее расширение с объектным кодом и с символом плюс (+) в 31 колонке.
Так как транслятор с Ассемблера является двухпроходовым, то для обеспечения обработки директивы INCLUDE только в первом проходе (а не в обоих) можно использовать следующую конструкцию:
IF1 INCLUDE C:MACRO.LIB ENDIF
IF1 и ENDIF являются условными директивами. Директива IF1 указывает Ассемблеру на необходимость доступа к библиотеке только в первом проходе трансляции.
Директива ENDIF завершает IF-логику. Таким образом, копия макроопределений не появится в листинге — будет сэкономлено и время и память.