Шаг 5.
Размещение данных во внешних модулях

    На этом шаге мы рассмотрим способ размещения данных во внешних модулях.

    Рассмотрим теперь менее важный (для нас) вопрос об использовании данных (переменных), определенных в другом объектном модуле.

    На этом шаге мы только приведем листинги программ, использующих данные, находящиеся во внешних по отношению к ним, модулях.

.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.




Предыдущий шаг Содержание Следующий шаг