
- •Префиксы повторения
- •3.11.6. Команды управления микропроцессором
- •Команды управления флагами
- •Команды синхронизации
- •3.11.7. Принципы кодирования команд
- •3.11.8. Время выполнения команд
- •3.12. Организация подпрограмм
- •3.12.1. Директивы описания подпрограмм
- •3.12.2. Передача параметров в подпрограммы
- •Передача параметров через регистры
- •Передача параметров через общие ячейки памяти
- •Передача параметров через зоны параметров
- •Передача параметров через стек
- •3.13. Организация системы прерываний
- •3.13.1. Внешние прерывания
- •3.13.2. Внутренние прерывания
- •3.13.3. Обслуживание прерываний
- •3.14.Нестандартные типы данных
- •3.14.1. Структуры
- •3.14.2. Записи
- •3.15.Макрокоманды
- •3.15.1. Макроопределения и макровызовы
- •3.15.2.Сравнение макрокоманд и подпрограмм
- •3.15.3. Макрокоманды повторения
- •3.15.4. Библиотеки макроопределений
- •IncludeИмя_библиотеки
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; макроопределений.