Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПТСПЦУВСБ / 9.Макросредства в ассемблере

..docx
Скачиваний:
48
Добавлен:
27.12.2015
Размер:
30.44 Кб
Скачать
  1. Макросредства в ассемблере.

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

Достоинства:

  • они более универсальны, т.к. позволяют параметрически управлять не только заданием обрабатываемых объектов, но и действиями над этими объектами;

  • их использование не связано с выполнением команд CALL и RETURN, поэтому применение макросов ускоряет выполнение программы;

  • поскольку описание макросов воспринимается как обычный текст при подстановке, то легко организуются библиотеки макросов.

Недостатки:

  • существенное увеличение длины программы, связанное с подстановкой тела макроса во все точки его вызова.

Использование макросов связано с понятиями макроопределение, макровызов, макрорасширение.

Макроопределение- описание действия, выполняющегося макросом применительно к фиксированным параметрам; состоит из заголовка, тела и концовки.

Заголовок: Nam_Macro MACRO [список фиктивных параметров]

Тело: последовательность операторов

Концевик: END [Nam_Macro]

Пример макроопределение установки курсора в левый верхний угол экрана.

Home Macro

mov dh, 0

mov dl, 0

mov al, 2; функция перемещения курсора

int 10h ; обработчик управления указателя

ENDM

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

Sr_Mov ds,es

при макрорасширении будет заменен на

push ds

pop es

  • параметр макроопределения не может быть частью идентификатора;

  • параметр макроопределения непосредственно не может использоваться в строке, т.к. его трудно распознать.

Правильный вариант.

Time_Msg Macro XXX

Tim&XXX: db ‘сейчас &ХХХ& часов$’

ENDM

Если в теле макроса используется метка, то она должна быть объявлена локальной, чтобы исключить многократное объявление имен.

В макросредствах широко применяются два вида директив (повторения и условные директивы).