Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры Лекции.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
65.84 Кб
Скачать

Макросредства языка ассемблера

Макрокоманда представляет собой развитие механизма замена текста

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

Макрокоманда представляет собой строку , содержащую некое символическое имя, предназначенную для того, чтобы быть замещённой одной или несколькими другими строками. Имя макрокоманды может сопровождаться параметрами. При возникновении необходимости использования макрокоманд и отсутствие её необходимо задать шаблон описания, который называется макроопределением

Синтаксис макроопределения

Имя_макрокоманды macro список_форм_аргум

Тело_макроопределения

Endm

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

  1. в начале исходного текста программы до сегмента кода и данных с тем, чтобы не ухудшать читабельность программы. Этот вариант применяется, когда отдельные макрокоманды актуальны в пределах только одной программы

  2. в отдельном файле. Этот вариант подходит при работе над несколькими программами одной предметной области. Чтобы сделать доступными эти макроопределения конкретной программе, необходимо в начале исходного текста написать директиву include.

Include имя_файла

  1. в макро-библиотеке.

Недостаток второго и третьего способа в том, что в исходный текст программы включаются абсолютно все макроопределения. Для исправления ситуации можно использовать директиву purge, в качестве операндов которой через запятую перечисляются имена макрокоманд, которые недолжны включатся в текст программы.

Функционально макрокоманды похожи на процедуры. Отличия можно рассматривать как достоинства, так и недостатки.

  1. В отличие от процедуры, текст которой неизменен, макроопределение в процессе макрогенерации может манятся в соответствии с фактическим набором параметров. При этом коррекции могут подвергаться как операнды команд, ток и сами команды

  2. При каждом вызове макрокоманды её текст в виде макрорасширения вставляется в программу.

  3. При вызове процедуры микропроцессор осуществляет передачу управления на начало процедуры. Находящийся в некоторой области памяти в одном экземпляре. Код в этом случае получается более компактным, а быстродействие снижается.

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

Имя_макрокоманды список_факт_аргум

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

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

Каждый фактический аргумент представляет строку символов, для формирования которой применяются следующие правила:

  1. Строка может состоять из:

    1. Последовательности символов без пробелов, точек, запятых, точек с запятой

    2. Последовательности любых символов заключённые в угловые скобки. В этой последовательности, заключённые в угловые скобки можно указывать как проблемы, так и точки, запятые и т.д.

  2. Для того, чтобы указать, что некоторый символ внутри строки, представляющей фактический параметр, является собственно символом, применяется специальный оператор «!». Этот оператор ставится перед описанным выше символом и его действия эквивалентно заключению символа в угловые скобки

  3. Если требуется вычисление в строке некоторого константного выражения, то в начале этого выражения ставится «%».