Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы (книга Комаров) / Программирование на Ассемблере (ч 3).doc
Скачиваний:
143
Добавлен:
08.03.2015
Размер:
540.67 Кб
Скачать

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

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

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

1) тщательно документируйте макроопределения, включая в них как можно больше комментариев;

2) сохраняйте все используемые регистры в начале макроопределения и восстанавливайте их в его конце;

3) включайте все комментарии в макроопределения с помощью оператора макрокомментария ;;, который должен предшествовать им.

Использование оператора ;;исключает комментарии в расширениях макроопределений, оставляя их лишь в макроописаниях. Это уменьшает расход памяти для хранения программы и ускоряет ее трансляцию.

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

IncludeИмя_библиотеки

Эта директива считывает указанный файл и помещает его в транслируемую программу по текущему адресу трансляции. Как правило, директива INCLUDEразмещается в начале исходного текста программы.

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

Для исключения считывания библиотеки макроопределений на втором проходе (с целью сокращения времени трансляции программы) директива INCLUDEпомещается в скобки условной трансляцииIF1,ENDIFи записывается в виде:

IF1

INCLUDE Имя_библиотеки

ENDIF.

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

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

Пример 3.139:

IF1

INCLUDEMACROS.lib ; Считывание библиотеки

PURGEMac5, Mac8 ; с удалением неиспользуемых

ENDIF; макроопределений.