отведена область памяти за пределами головной программы. Функции
EXEC передается только сегментный адрес, в качестве позиции, куда
будет загружен оверлей. Когда оверлей загружается в тело головной
программы, то программа должна вычислить номер параграфа, куда
будет загружаться оверлей, сама. С другой стороны, при загрузке в
специально отведенную память MS DOS обеспечивает программу номе-
ром параграфа.
В нижеприведенном примере используется загрузка в отведенную
память. Поскольку DOS отводит программе всю доступную память, то
сначала необходимо освободить память с помощью функции 4AH. Функ-
ция 48H отводит блок памяти достаточно большой, чтобы он мог
принять самый большой из оверлеев. Эта функция возвращает значе-
ние сегмента блока в AX, и этот номер параграфа определяет куда
будет загружен оверлей, а также по какому адресу оверлей будет
вызываться головной программой. Эти функции детально обсуждаются
в [1.3.1].
Кроме кода 3, засылаемого в AL, Вы должны установить для этой
функции еще два параметра. DS:DX должны указывать на строку, даю-
щую путь к файлу оверлея, завершаемую байтом ASCII 0. Необходимо
указывать полное имя файла, включая расширение .COM или .EXE,
поскольку DOS в данном случае не считает, что он ищет программный
файл.
Наконец, ES:BX должны указывать на 4-байтный блок параметров,
который содержит (1) 2-байтный номер параграфа, куда будет загру-
жаться оверлей и (2) 2-байтный фактор привязки, который будет
использоваться для привязки адресов в оверлее (привязка объяс-
няется в [1.3.6]). В качестве номера параграфа надо использовать
Предыдущая страница 61 Следующая страница
338259249
|