3.3.8. Глобальные объявления

public    язык метка...       ;  Для TASM и MASM.

ИЛИ

public   метка язык...      ; Для WASM.

Метка, объявленная директивой PUBLIC, становится доступной для других модулей программы. Так, можно объявлять имена процедур, переменные и кон­станты, определенные директивой EQU. Необязательный операнд языка (С, PASCAL, BASIC, FORTRAN, SYSCALL или STDCALL) указывает, что метка будет вызываться из модуля, написанного на соответствующем языке, и при не­обходимости изменяет ее (например, добавляет _ перед первым символом метки).

сом       расст язык метка:тип... ; Для TASM.

comm      язык расст метка:тип... ; Для TASM.

comm      расст метка:тип язык. . . ; Для WASM.

Директива СОММ описывает общую переменную. Такие переменные доступ­ны из всех модулей, и их размещение в программе определяется на этапе компо­новки. Обязательные аргументы директивы СОММ - метка (собственно имя об­щей переменной) и тип (BYTE, WORD, DWORD, FWORD, QWORD, TBYTE или имя структуры). Необязательный операнд «расстояние» (NEAR или FAR) указыва­ет, находится ли переменная в группе сегментов DGROUP (ближняя переменная, для доступа достаточно смещения) или вне этих сегментов (дальняя переменная,

для доступа потребуется сегментный адрес). Для моделей памяти TINY, SMALL

и COMPACT по умолчанию значение этого операнда принимается за NEAR. И на­конец, операнд «язык» действует аналогично такому же операнду для PUBLIC.

extrn язык extrn метка:тип... метка:тип язык.

; Для МASM и TASM. ; Для WASM.

Описывает метку, определенную в другом модуле (с помощью PUBLIC). Тип (BYTE, WORD, DWORD, FWORD, QWORD, TBYTE, имя структуры, FAR, NEAR, ABS) должен соответствовать типу метки в том модуле, где она была уста­новлена (тип ABS используется для констант из других модулей, определенных директивой EQU). Необязательный операнд языка действует так же, как и для

директивы PUBLIC.

global язык      метка:тип... ;  Для MASM и TASM.

global метка:тип язык....;  Для WASM.

Директива GLOBAL действует, как PUBLIC и EXTRN одновременно. Когда указанная метка находится в этом же модуле, она становится доступной для дру­гих модулей, как если бы выполнилась директива PUBLIC. Если метка не описа­на - она считается внешней и выполняется действие, аналогичное действию ди­рективы EXTRN.