На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 1 / Макробиблиотеки Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Макробиблиотеки

Термин "макробиблиотека" не совсем верен. В действительности, макробиблиотеки совсем не то, что под этим могли бы понимать программные средства LINK /редактор/ и LIB /обработчик библиотек/ фирмы Майкрософт.Макросы должны подключаться во время компиляции, так как они представляют собой директивы для MASM и только для MASM. Средства LINK и LIB не знают, что делать с ними. Вместо этого макробиблиотеки являют собой файлы типа include (включить). Они могут определяться в отдельном файле, называемом MYLIB.MAC или STANDARD. MLB или как-нибудь еще (Вы можете выбрать любое допустимое имя), и подключаться при ассемблировании посредством помещения в исходный текст программы директивы include. Например,


             INCLUDE  C:\ASМ\LIB\STANDARD.MLB  \*

Правила написания имени и указания накопителя те же, что и для всей системы. В файле листинга строки, полученные из файла include, начинаются с буквы "C", равно как строки макрорасширения начинаются с плюса "+" (в версиях MASM ниже 4.0) или номера уровня расширения. Конечно, если у Вас большая библиотека и Вы не хотите загромождать файл .LST макроописаниями, при помощи директивы .XLIST "выключите" листинг перед include, а затем "включите" его обратно (после include), применяя директиву .LIST.


Использование макробиблиотек обосновывает введение следующих макродиректив. Хотя довольно редко сначала определяют макро в программе, а затем отменяют такое определение (Вы бы его скорее просто уничтожили!), для использования нескольких макроопределений Вы вполне можете подключить макробиблиотеку. Оставшиеся макроопределения занимают значительное пространство памяти в таблице символов MASM и в области памяти макро. Вернуть эту память можно при помощи директивы PURGE (очистить). PURGE позволяет изъять описания указанных макро. Для изъятия макроописаний предыдущего примера следует выдать директиву:


            PURGE @DosCall,@InitStk,@InitPrg,@Finis,@DisStr,@TypeStr

Она очищает все пространство памяти, занятое макроописаниями, и позволяет нам использовать его для других целей.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz