Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция 4BH, подфункция 01H. Структура данных, формируемая подфункцией 01H Смещение Размер Назначение 00H Сегментный адрес окружения запускаемой программы 02H




Функция 4BH, подфункция 01H

Назначение: загрузка программы в память без ее выполнения. Подфункция 01H выполняет те же действия, что и подфункция 00H, но не запускает программу. Параметры подфункции 01H, такие же, как и для подфункции 01H. После вызова подфункции 01H регистровая пара ES: BX указывает на структуру размером 22 байта с информацией о загруженной программе. Эта структура включает в себя блок параметров, переданный подфункции 01H и два дополнительных поля. В табл. 19 приведены смещения полей структуры, их размеры (в байтах) и назначение.

 

Таблица 19

Структура данных, формируемая подфункцией 01H

Смещение Размер Назначение
00H Сегментный адрес окружения запускаемой программы
02H Адрес строки параметров
06H Адрес неоткрытого FCB
0AH Адрес неоткрытого FCB
0EH Точка входа в программу в формате сегмент: смещение
12H Значение указателя стека и сегмент стека

 

Точку входа в программу можно использовать для запуска загруженной программы. Это можно выполнить, например, командой дальнего перехода JMP.

Последнее поле структуры определяет параметры, необходимые для переключения стека. Первые два байта поля содержат необходимое значение регистра SP, а вторые два байта – необходимое значение регистра SS. Перед запуском программы вызывающая программа должна обеспечить переключение на стек вызываемой программы.

 

Функция 4BH, подфункция 03H

Назначение: оверлейная загрузка программы в память без ее запуска. Оверлейная загрузка означает загрузку в память фрагмента кода программы без подготовки префикса программного сегмента и инициализации различных регистров. Оверлейная загрузка является единственным способом выполнения программ, объем кода которых превышает объем доступной памяти. Такие программы выполняются по частям, выгружая уже выполненные фрагменты кода и загружая новые.

Использование оверлейной загрузки является достаточно сложным процессом, который используется только для очень больших программ, и здесь рассматриваться не будет.

 

Функция 4CH

Назначение: завершение программы и передача управления вызывавшей программе с кодом возврата. Код возврата указывается в регистре AL. Хотя для завершения программы можно использовать функцию DOS 00H или прерывание 20H, предпочтительнее использовать функцию 4CH. К тому же эта функция может использоваться для возвращения программой какого-либо значения в вызвавшую программу.

Пример использования функции 4CH:

MOV AH, 4CH

MOV AL, 01H          ; код возврата

INT 21H

 

Функция 4DH

Назначение: получение кода возврата последней завершенной программы. Код возврата помещается в регистр AL. В регистр AH помещается значение, определяющее, каким образом была завершена программа. В табл. 20 приведены возможные значения регистра AH после вызова функции 4DH.

 

Таблица 20

Значения регистра AH после вызова функции 4DH

Значение регистра AH Описание
Нормальное завершение программы
Завершение программы по нажатию Ctrl+Break
Завершение программы по возникновению критической ошибки
Завершение программы и сохранение ее резидентной в памяти

 

Функция 4DH возвращает корректную информацию только один раз для каждой последней завершенной программы.

Пример использования функции 4DH:

MOV AH, 4DH

INT 21H

CMP AH, 0

JNZ M1

. . .                      ; не нормальное завершение программы

M1:

. . .                      ; нормальное завершение программы

 

Функция 50H

Назначение: установка текущего префикса программного сегмента. Функция 50H используется обычно в резидентных программах для того, чтобы сообщить DOS сегмент своего префикса программного сегмента. Если этого не сделать, DOS будет считать, что текущей программой является та программа, которая была прервана при переключении на обработчик прерывания резидентной программы. Сегмент префикса программного сегмента заносится в регистр BX.

Пример использования функции 50H:

CODE SEGMENT

ORG 100H

. . .

New2FH PROC        ; обработчик программного прерывания

. . .

MOV BX, CS

MOV AH, 50H

INT 21H

. . .

IRET

New2FH ENDP

. . .

CODE ENDS

Для этого примера следует отметить, что прерывание DOS 21H вызывается в обработчике программного, а не аппаратного прерывания.

 

Функция 51H

Назначение: получение сегмента префикса программного сегмента текущей программы. Функция 51H возвращает в регистре BX значение префикса программного сегмента. Если функция вызвана в обработчике программного прерывания, то возвращаемое в регистре BX значение является сегментом префикса программного сегмента прерванной программы, а не резидентной. Для того чтобы в резидентной программе можно было использовать префикс программного сегмента, нужно его значение во время инициализации резидентной программы записать в переменные резидентной части. Это справедливо для программ типа EXE. Для COM программ регистр CS всегда указывает на префикс программного сегмента и использование функции 51H не имеет смысла.

Пример использования функции 51H:

MOV AH, 51H

INT 21H

Функции настройки даты/времени позволяют получить или установить дату и время DOS. Начиная с DOS 3. 3, функции установки даты и времени также изменяют значения даты и времени BIOS.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...