"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автораОверлеи - это части программы, которые остаются на диске, в то время как тело программы резидентно в памяти. Когда требуется функция, выполняемая каким-либо оверлеем, то он загружается в память и программа вызывает его как процедуру. Различные оверлеи могут загружаться в одно и то же место памяти, перекрывая преды- дущий код. Например, программа ведения базы данных может загру- зить процедуру сортировки, а затем перекрыть ее процедурой гене- рации отчетов. Эта техника используется для экономии памяти. Но она хороша только для тех процедур, которые не используются пос- тоянно, иначе частые обращения к диску приведут к тому, что прог- рамма будет выполняться слишком медленно. Средний уровень. MS DOS использует функцию EXEC для загрузки оверлеев. Эта функция, номер 4BH прерывания 21H, используется также для загруз- ки и запуска одной программы из другой, если поместить код 0 в AL [1.3.2]. Если в AL поместить код 3, то тогда будет загружен овер- лей. В этом случае не создается PSP, поэтому оверлей не устанав- ливается как независимая программа. Такая процедура просто загру- жает оверлей, не передавая ему управления. Имеется два способа обеспечить память для оверлея. Может быть использована либо область внутри тела программы, либо специально отведена область памяти за пределами головной программы. Функции будет загружен оверлей. Когда оверлей загружается в тело головной программы, то программа должна вычислить номер параграфа, куда будет загружаться оверлей, сама. С другой стороны, при загрузке в специально отведенную память MS DOS обеспечивает программу номе- ром параграфа. В нижеприведенном примере используется загрузка в отведенную память. Поскольку DOS отводит программе всю доступную память, то сначала необходимо освободить память с помощью функции 4AH. Функ- ция 48H отводит блок памяти достаточно большой, чтобы он мог принять самый большой из оверлеев. Эта функция возвращает значе- ние сегмента блока в AX, и этот номер параграфа определяет куда будет загружен оверлей, а также по какому адресу оверлей будет вызываться головной программой. Эти функции детально обсуждаются в [1.3.1]. Кроме кода 3, засылаемого в AL, Вы должны установить для этой функции еще два параметра. DS:DX должны указывать на строку, даю- щую путь к файлу оверлея, завершаемую байтом 0. Необходимо указывать полное имя файла, включая расширение .COM или .EXE, поскольку DOS в данном случае не считает, что он ищет программный файл. Наконец, ES:BX должны указывать на 4-байтный блок параметров, который содержит: 1 2-байтный номер параграфа, куда будет загружаться |
|
|