Читайте также:
|
|
Резидентные программы используются как перехватчики прерываний, если необходимо выполнить нестандартную логику, отличную от прерывающей программы BIOS или DOS, или как многократно используемые утилиты для обслуживания разнообразных программ.
Резидентная программа постоянно находится в ОП (resident - постоянный житель). Она запускается как обычная программа, но по завершению оставляет в ОП какую-то свою часть или остается вся. Резидентные программы иначе называют TSR - программами (terminate and stay Resident - завершиться и остаться резидентными).
TSR - программой может быть как программа COM, так и EXE. Поскольку эта программа будет занимать место в ОП, она должна быть очень компактна. Этому условию больше всего удовлетворяют COM программы.
Резидентные программы обычно состоят из двух частей: инициализирующей и резидентной. Инициализирующая часть получает управление при запуске программы первый раз, когда вся программа помещается в память. Эта часть заполняет или модифицирует векторы прерываний и настраивает резидентную часть на конкретные условия работы. Условия обычно передают через параметры командной строки (в PSP смещении 80h и 81h), либо через диалог. После обработки инициализирующей части выдается либо прерывание int 27h, либо функция 31h прерывания 21h, которые оставляют указанную часть программы резидентной.
К резидентной части необходимо как-то обратиться. Наиболее частый способ - это обращение через прерывание. Для этого необходимо в соответствующий вектор прерывания поместить сегмент и смещение точки входа в резидентную часть. Лучший способ записи в вектор - использование функции 25h прерывания int 21h.
В качестве вектора прерывания могут быть используемые BIOS, DOS либо вектора, предназначенные пользователям. Вектора BIOS или DOS используются, если TSR - программа должна заменить или дополнить стандартную прерывающую программу.
Установка вектора прерывания осуществляется в инициализирующей части. В той же части часто сохраняют старое значение вектора. Это необходимо, если требуется в зависимости от условий либо выполнять оригинальную обработку TSR - программой, либо стандартную обработку BIOS или DOS. Для получения старого значения рекомендуется функция 35h прерывания int 21h.
После инициализации с установкой нового вектора прерывания выдают команду завершения с сохранением резидентной программы в ОП. Один из способов - выдать int 27h, рекомендуемое для COM программ в DOS, так как адресация команд в COM начинается с начала PSP. Структура программы для такого завершения имеет следующий вид:
...
Дата добавления: 2015-10-02; просмотров: 84 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Прерывания | | | Управление периферийными устройствами |