Организация интерфейса между процедурами, расположенными в разных модулях
Cseg2 ends
Subr endp
Ret
Subr proc far
Cseg1 ends
Start endp
Ret
Call dword ptr subadr
Start proc far
Dseg ends
Subadr dd subr
cseg1 segment ‘code’
……
……….
cseg2 segment ‘code’
…
…
Используются директивы: EXTRN, PUBLIC, GLOBAL
ДирективаEXTRN объявляет некоторое имя внешним по отношению к данному модулю.
Это имя должно быть объявлено в другом модуле директивой PUBLIC.
EXTRN имя:тип [, имя:тип] ,[имя:тип] ….
Имя– идентификатор, определенный в другом модуле.
В качестве идентификаторов используются:
o имена переменных, определенные директивами db, dw, dd и т.д. ,
o имена процедур,
o имена констант.
Для переменных типможет быть: byte, word, dword, pword, fword, qword, tbyte.
Тип процедуры far(дальняя) или near(ближняя).
Если имя – константа, то тип в директиве – abs.
ДирективаPUBLICобъявляетимена, определенные в этом модуле, видимыми из других модулей.
PUBLIC имя [,имя] [,имя]…
Директива GLOBAL, используемая применительно к передаваемому объекту, интерпретируется как директива PUBLIC, а используемая применительно к принимаемому объекту – как EXTRN
ДирективаGLOBALимеет формат директивы EXTRN
GLOBAL имя:тип [, имя:тип]
Пример программы, использующей данные директивы:
;модуль1
GLOBAL res : byte, add : far