32. Макросредства. Макроопределение, макрокоманда, макрорасширение.

Макроопределение – специальным образом оформленная группа команд, к которой в тексте программы можно обратиться с помощью некоторого символического имени – макрокоманды. (макроопределение может иметь формальные параметры, тогда макрокоманда должна иметь фактические).

Макрорасширение – некоторая последовательность инструкций ассемблера, которую формирует макроассемблер на этапе трансляции, путем замены формальных параметров макроопределения фактическими параметрами макрокоманды. Полученное макрорасширение вставляется в текст программы вместо макрокоманды.

Макрогенерация – процесс замены формальных параметров макроопределения фактическими параметрами макрокоманды,в этом и заключается учет контекста.
Синтаксис макроопределения следующий:

Имя_Макрокоманды MACRO [Список_Формальных_Аргументов] 
    Тело_Макроопределения
ENDM

    Существует три варианта размещения макроопределений:

  • в начале исходного текста программы;
  • до кода и данных с тем, чтобы не ухудшать читаемость программы;
  • в отдельном файле;

Чтобы сделать доступными эти макроопределения в конкретной программе, необходимо в начале исходного текста этой программы записать директиву include Имя_Файла, например:

includeshow.inc;сюда вставляется текст файла show.inc

Что бы не все макроопределения из файла включались в программу используют директиву purge, в качестве операндов которой через запятую перечисляются имена макрокоманд, которые не должны включаться в текст программы. К примеру:

include iomac.inc
purgeoutstr,exit

Для определения локальных переменных и меток применяют директиву local,

local Cписок_Идентификаторов

Эту директиву необходимо задавать непосредственно за заголовком макроопределения. Результатом работы этой директивы будет генерация в каждом экземпляре макрорасширения уникальных имен для всех идентификаторов, перечисленных в Cписок_Идентификаторов. Эти уникальные имена имеют вид ??хххх, где хххх — шестнадцатеричное число.

17.07.2015