ВУЗ:
Составители:
обработчиков аппаратных прерываний, а также от адреса
загрузки вызывающей программы.
В приложении Б приведено назначение некоторых пре-
рываний (функций).
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) и содержалась строка: память