Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


К лабораторной работе № 5



Препроцессоры

Макроопределения

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

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

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

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

 

Например, пусть необходимо сложить содержимое двух ячеек памяти размером в слово, используя макроопределение:

; макроопределение для сложения двух значений

ADD_WORDS MACRO TERM1, TERM2, SUM

MOV      AX, TERM1

ADD       AX, TERM2

MOV      SUM, AX

ENDM

Тогда в программе можно использовать оператор:

ADD_WORDS PRICE, TAX, COST

Вместо этого оператора Ассемблер после трансляции вставит в программу следующие команды:

MOV AX, PRICE

ADD AX, TAX

MOV COST, AX

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

title  ex_prog - заголовок программы
      page ,132  
имя1 macro [параметры] - первое макроопределение
 
endm  
 
имяN macro [параметры] - N-ое макроопределение
 
endm  
stack  segment   para stack 'stack' - сегмент стека
 
stack  ends  
dseg  segment para public 'data' - сегмент данных
 
dseg ends  
cseg segment para public 'code' - сегмент команд
 
cseg ends  
    end our_prog - конец программы

 

Библиотека макроопределений.

Библиотека макроопределений представляет собой файл с расширением lib, в котором заданы макроопределения, необходимые для нескольких программ. Этот файл можно создать с помощью любого текстового редактора точно так же, как и любую программу. После того как такой файл создан, его содержимое можно считывать в любую исходную программу. Тем самым все макроопределения библиотеки становятся доступными для этой программы. Чтобы использовать какой-либо из них, достаточно указать его имя.

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

· Старайтесь делать макроопределения как можно более универсальными.

· Если макроопределение содержит метки, перечислите их в операторе LOCAL.

· Сохраняйте все используемые в макроопределении регистры, за исключением выходных, с помощью операторов PUSH и РОР.

 


Поделиться:



Последнее изменение этой страницы: 2019-05-07; Просмотров: 218; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.009 с.)
Главная | Случайная страница | Обратная связь