На этом шаге мы рассмотрим способ размещения данных во внешних модулях.
Рассмотрим теперь менее важный (для нас) вопрос об использовании данных (переменных), определенных в другом объектном модуле.
На этом шаге мы только приведем листинги программ, использующих данные, находящиеся во внешних по отношению к ним, модулях.
.386P ;модуль PROG2.ASM ;он содержит переменную ALT, которая будет использоваться в другом модуле ;плоская модель памяти .MODEL FLAT, STDCALL PUBLIC PROC1 PUBLIC ALT ;сегмент данных _DATA SEGMENT DWORD PUBLIC USE32 'DATA' ALT DWORD 0 _DATA ENDS _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' PROC1 PROC MOV EAX, ALT ADD ЕАХ, 10 RET PROC1 ENDP _TEXT ENDS END
Листинг модуля, использующего переменную ALT:
.386P ;модуль PROG1.ASM ;плоская модель памяти .MODEL FLAT, STDCALL ;------------------------------------------------- ;прототип внешней процедуры EXTERN PROC1@0:NEAR ;внешняя переменная EXTERN ALT:DWORD ;сегмент данных _DATA SEGMENT DWORD PUBLIC USE32 'DATA' _DATA ENDS ;сегмент кода _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: MOV ALT, 10 CALL PROC1@0 MOV EAX,ALT RET ;выход _TEXT ENDS END START
Заметим, что в отличие от внешних процедур, внешняя переменная не требует добавки @N, поскольку размер переменной известен.
На следующем шаге мы начнем рассмотрим трансляцию средствами TASM.