Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Резидентные программы в MS DOS

Особенности сегментно-страничной организации в ПЭВМ | Абсолютный загрузчик | Настраивающий загрузчик | Загрузка программ для ЭВМ с явной адресацией | Загрузка программ для ЭВМ с неявной сегментной адресацией | Загрузка программ в ПЭВМ | Оверлейные программы | Call dword ptr over_off | Дисциплины с одной очередью | Дисциплины с несколькими очередями |


Читайте также:
  1. I. Общая характеристика программы
  2. II. Организационно-педагогические условия реализации программы (материально-техническое обеспечение образовательного процесса)
  3. II. Основные цели и задачи Программы с указанием сроков и этапов ее реализации, а также целевых индикаторов и показателей
  4. III. Мероприятия Программы
  5. IV. Обоснование ресурсного обеспечения Программы
  6. MEM.EXE/CLASSIFY|/DEBUG|/FREE|/MODULE имя_программы /PAGE
  7. V. Рабочие программы дисциплин

Резидентные программы используются как перехватчики прерываний, если необходимо выполнить нестандартную логику, отличную от прерывающей программы 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Прерывания| Управление периферийными устройствами

mybiblioteka.su - 2015-2024 год. (0.008 сек.)