| Справочник программиста на персональном компьютере фирмы IBM | 64 |
SHL BX,CL ;чтобы получить величину в байтах
MOV OVERLAY_OFFSET,BX ;запоминаем смещение
;-загрузка первого оверлея
MOV AX,SEG BLOCK ;ES:BX указывает на блок параметров
MOV ES,AX ;
MOV BX,OFFSET BLOCK ;
MOV AX,OVERLAY_SEG ;помещаем адрес сегмента оверлея в
MOV [BX],AX ;первое слово блока параметров
MOV [BX]+2,AX ;сегмент оверлея - фактор привязки
LEA DX,PATH ;DS:DX указывает на путь к файлу
MOV AH,48H ;номер функции EXEC
MOV AL,3 ;код загрузки оверлея
INT 21H ;загружаем оверлей
JC LOAD_ERROR ;флаг переноса говорит об ошибке
;-теперь программа занимается своими делами
.
.
CALL DWORD PTR OVERLAY_OFFSET ;вызов оверлея
. ;нужно указывать DWORD PTR, так как оверлей -
. ;далекая процедура
;-посмотрите эту структуру, когда будете писать оверлей
DSEG SEGMENT ;как обычно, устанавливаем сегмент данных
. ;опускаем стековый сегмент (используется
. ;стек вызывающей программы)
DSEG ENDS
CSEG SEGMENT PARA PUBLIC 'CODE'
OVERLAY PROC FAR ;всегда "далекая" процедура
Предыдущая страница 64 Следующая страница
1742950812
|