Описание идентификаторов библиотеки
Вы можете использовать идентификаторы, как динамические точки входа для динамически компонуемых библиотек (DLL). Для описания идентификаторов, которые будут доступны таким образом, используйте директиву PUBLICDDL. Она имеет следующий синтаксис:
PUBLICDLL [язык] идентификатор [,[язык] идентификатор] .
Турбо Ассемблер описывает идентификатор в объектном файле, как динамически компонуемую точку входа, благодаря чему они могут быть доступны в других программах. Спецификатор "язык" приводит к применению специфических для языка соглашений к конкретному имени идентификатора. Допустимыми спецификаторами языка являются спецификаторы C, CPP, PASCAL, BASIC, FORTRAN, PROLOG и NOLANGUAGE.
Приведем пример кода с использованием PUBLICDLL:
PUBLICDLL XYPROC ; процедура XYPROC доступна как XYPOROXC PROC NEAR ; динамически компонуемая точка входа
Определение внешних идентификаторов
Внешние идентификаторы - это идентификаторы, которые определены вне модуля и которые вы можете использовать внутри модуля. Эти идентификаторы должны быть описаны с помощью директивы PUBLIC. Директива EXTRN имеет следующий синтаксис:
EXTRN определение [,определение] .
где "определение" описывает идентификатор и имеет следующий формат:
[язык] имя [[счетчик_1]] :сложный_тип [:счетчик_2]
Описание глобальных идентификаторов
Глобальные идентификаторы действуют также, как общедоступные, при этом вам не нужно определять PUBLIC или EXTRN. Если переменная определена в модуле, она действует как общедоступная. Если нет, она действует как внешняя. Для определения глобальных идентификаторов вы можете использовать директиву GLOBAL. Директива GLOBAL имеет тот же синтаксис, что директивы PUBLIC и EXTRN (их синтаксис описан в предыдущих разделах).
Директива GLOBAL позволяет вам иметь включаемый файл, который будет включаться во все исходные модули. Включаемый файл содержит все совместно используемые данные, определенные как глобальные идентификаторы. Когда вы в каждом модуле ссылаетесь на эти элементы данных, директива GLOBAL действует как директива EXTRN, описывая для другого модуля, как определены данные.
Перед тем, как использовать его где-либо в исходном коде, вы должны описать идентификатор как GLOBAL. Кроме того заметим, что при задании аргументов директивы GLOBAL используется тот же синтаксис, что и в директиве EXTRN.
Приведем пример:
GLOBAL X:WORD, Y:BYTE X DW 0 ; идентификатор стал доступен в других модулях mov al, Y ; описан как внешний
1 2 3
8 8 8
| |