|
|
|
|
Макробиблиотеки
Термин "макробиблиотека" не совсем верен. В действительности, макробиблиотеки совсем не то, что под этим могли бы понимать программные
средства 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
|
Она очищает все пространство памяти, занятое макроописаниями, и позволяет нам использовать его для других целей.
|
|