Графические устройства

         

Описание макроопределений



Пример 2.12. Описание макроопределений PushReg и PopReg

; Сохранение в стеке регистров, перечисленных в списке гeg
PushReg macro reg ; заголовок макроопределения
  irp r,<reg> ; начало оператора повторения
push r заготовка повторяемой команды
endm конец оператора повторения
endm конец макроопределения
BO( :становление из стека регистров, перечисленных в списке reg.
PopReg macro reg заголовок макроопределения
irp r,<reg> оператор повторения
pop r заготовка повторяемой команды
endm конец оператора повторения
endni конец макроопределения

Макросы примера 2.12 различаются только заготовкой повторяемой команды. В одном случае это запись в стек, а в другом — выталкивание из него.
При оформлении макросов используются специальные директивы. Текст любого макроопределения начинается директивой macro, перед ней указывается имя макроса, а после нее, в той же строке, список аргументов, если таковые имеются, в данном примере это reg.

Другая, часто используемая директива — endm. В зависимости от контекста она указывает конец макроопределения или оператора, что и показано в примере 2.12.
Тела макроопределений примера 2.12 состоят из директивы повторения irp. После нее, в той же строке, указываются параметр г и имя списка аргументов, заключенное в угловые скобки. Оно должно совпадать с именем, указанным в директиве macro. В следующей строке записывается повторяемая команда, один из операндов которой г соответствует параметру директивы irp.

В общем случае тело директивы irp может состоять из нескольких команд или содержать другие директивы, поэтому нужен признак конца директивы endm.
Обнаружив в тексте программы макроопределение, Макроассемблер проверяет его синтаксис и запоминает имя и текст, не включая его в тело задачи. Исполнение макроопределения (вставка команд в тело задачи) будет производиться при каждом макровызове.



Содержание раздела