Таблица векторов прерываний. Методические указания к выполнению лабораторной работы. Мадыев А.П - 4 стр.

UptoLike

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