ВУЗ:
Составители:
обработчиков аппаратных прерываний, а также от адреса
загрузки вызывающей программы.
В приложении Б приведено назначение некоторых пре-
рываний (функций).
5.3. Краткие сведения о драйверах «мыши».
В среде MS DOS системные и прикладные программы
могут заменять обработчики или добавлять новые вместо
отсутствующих. При этом программа изменяет и вектор
прерывания. После завершения работы программа должна
восстановить прежние обработчики и векторы. В данной
работе в качестве программы, модифицирующей векторы
прерывания, применяется драйвер «мыши», который ис-
пользует прерывание INT 33h. BIOS и MS DOS не имеют
обработчиков этого прерывания. При запуске драйвер за-
гружает в оперативную память исполняемый код обработ-
чика, заменяет вектор прерывания INT 33h, а также может
изменить вектор аппаратного прерывания IRQ4 (см. при-
ложение Б) в случае, если «мышь» подключена к последо-
вательному порту COM1. При выгрузке драйвер должен
восстановить все измененные векторы.
Чтобы узнать имя и размер загруженного драйвера
нужно запустить утилиту DOS – mem с параметром /р. При
выводе информации первая колонка – адрес, вторая - имя
загруженной в память программы, третья – размер про-
граммы. Запустив драйвер с параметром /h можно получить
справку о данном драйвере (используемые ключи, выгрузка
из памяти и др.). Для загрузки драйвера в верхнюю память
(память с адресами от 640 Кбайт до 1Мбайта) нужно в фай-
ле конфигурации CONFIG.SYS использовать команду:
DEVICEHIGH = имя-файла-драйвера (параметры).
Чтобы загрузка прошла удачно, необходимо чтобы перед
этой командой в файле CONFIG.SYS был запущен драйвер
верхней памяти (типа ЕММ386) и содержалась строка:
DOS=UMB или DOS=HIGH, UMB.
5.4. Перевод адреса сегмент:смещение в абсо-
лютный адрес.
Для определения абсолютного адреса необходимо пе-
ревести считанный из ТВП адрес из формата сег-
мент:смещение в абсолютный адрес. Для этого необходимо
к шестнадцатеричному числу справа приписать ноль, (при
этом получится двадцатиразрядное двоичное число) и при-
бавить смещение:
ХХХХ0 – сегмент
+ YYYY – смещение
= абсолютный адрес
Приложение А.
Таблица А.1. Результаты выполнения разработанной про-
граммы
Начальный адрес обработчика прерывания
По данным про-
граммы
*
По данным утилиты mem
Вектор
преры-
вания
Дополни-
тельное
условие
абсол.
адрес
Сегмент:
смещение
абсол.
адрес
Сегмент
:
смещение
Имя вла-
дельца об-
ласти памя-
ти
33h
IRQ4
Драйвер
«мыши»
не загру-
жен
33h
IRQ4
Драйвер
«мыши»
загружен
в базовую
память
обработчиков аппаратных прерываний, а также от адреса DOS=UMB или DOS=HIGH, UMB.
загрузки вызывающей программы.
В приложении Б приведено назначение некоторых пре- 5.4. Перевод адреса сегмент:смещение в абсо-
рываний (функций). лютный адрес.
Для определения абсолютного адреса необходимо пе-
5.3. Краткие сведения о драйверах «мыши». ревести считанный из ТВП адрес из формата сег-
В среде MS DOS системные и прикладные программы мент:смещение в абсолютный адрес. Для этого необходимо
могут заменять обработчики или добавлять новые вместо к шестнадцатеричному числу справа приписать ноль, (при
отсутствующих. При этом программа изменяет и вектор этом получится двадцатиразрядное двоичное число) и при-
прерывания. После завершения работы программа должна бавить смещение:
восстановить прежние обработчики и векторы. В данной ХХХХ0 – сегмент
работе в качестве программы, модифицирующей векторы + YYYY – смещение
прерывания, применяется драйвер «мыши», который ис- = абсолютный адрес
пользует прерывание INT 33h. BIOS и MS DOS не имеют
обработчиков этого прерывания. При запуске драйвер за-
гружает в оперативную память исполняемый код обработ-
чика, заменяет вектор прерывания INT 33h, а также может Приложение А.
изменить вектор аппаратного прерывания IRQ4 (см. при-
ложение Б) в случае, если «мышь» подключена к последо- Таблица А.1. Результаты выполнения разработанной про-
вательному порту COM1. При выгрузке драйвер должен граммы
восстановить все измененные векторы. Начальный адрес обработчика прерывания
Чтобы узнать имя и размер загруженного драйвера По данным про- По данным утилиты mem
нужно запустить утилиту DOS – mem с параметром /р. При Вектор Дополни- граммы *
выводе информации первая колонка – адрес, вторая - имя преры- тельное
абсол. Сегмент: абсол. Сегмент : Имя вла-
вания условие
загруженной в память программы, третья – размер про- адрес смещение адрес смещение дельца об-
граммы. Запустив драйвер с параметром /h можно получить ласти памя-
справку о данном драйвере (используемые ключи, выгрузка ти
33h Драйвер
из памяти и др.). Для загрузки драйвера в верхнюю память «мыши»
(память с адресами от 640 Кбайт до 1Мбайта) нужно в фай- не загру-
IRQ4
ле конфигурации CONFIG.SYS использовать команду: жен
DEVICEHIGH = имя-файла-драйвера (параметры). 33h Драйвер
Чтобы загрузка прошла удачно, необходимо чтобы перед «мыши»
этой командой в файле CONFIG.SYS был запущен драйвер загружен
IRQ4
в базовую
верхней памяти (типа ЕММ386) и содержалась строка:
память
