"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

оверлей
2 2-байтный фактор привязки, который будет использоваться
для привязки адресов в оверлее (привязка объясняется
в [1.3.6]).

В качестве номера параграфа надо использовать число, возвращаемое
в AX, для номера параграфа отведенного блока памяти. Фактор привязки
дает смещение, по которому могут быть вычислены адреса требующих
привязки параметров в оверлее. Используйте номер параграфа, куда
загружается оверлей. После того как он установлен, вызовите функцию
и оверлей будет загружен. Просто изменяя путь к оверлейному файлу,
можно вновь и вновь вызывать эту функцию, загружая все новые и новые
оверлеи.
Если при возврате установлен флаг переноса, то была ошибка и ее код
будет возвращен в AX.

1 - если указан неверный номер функции
2 - если файл не найден
5 - при дисковых ошибках
8 - при отсутствии достаточной памяти.

После того как оверлей загружен в память, к нему можно полу-
чить доступ как к далекой (far) процедуре. В сегменте данных
должен быть установлен двухсловный указатель, определяющий этот
вызов. Сегментная часть указателя просто равна текущему кодовому
сегменту. Смещение оверлея должно быть вычислено нахождением
разницы между сегментами кода и оверлея и умножением результата
на 16 (переводя величину из параграфов в байты). В нижеприведен-
ном примере две переменные OVERLAY_OFFSET и CODE_SEG помещены
одна за другой для правильной установки указателя. Однажды загру-
женный, оверелей затем можем вызываться инструкцией CALL DWORD
PTR OVERLAY_OFFSET.
Оверлей может быть полной программой со своими сегментами
данных и стека, хотя как правило используется стековый сегмент
вызывающей программы. При вызове оверлея значение сегмента его
собственного сегмента данных должно быть помещено в DS.

;---завершаем программу фиктивным сегментом (см. [1.3.1]):
ZSEG SEGMENT
ZSEG ENDS

;---в сегменте данных
OVERLAY_SEG DW ?
OVERLAY_OFFSET DW ? ;смещение оверлея
CODE_SEG DW ? ;сегмент оверлея - должен
;следовать за смещением
PATH DB 'A:OVERLAY.EXE',0
BLOCK DD 0 ;4-байтный блок параметров

;---освобождаем память