Составители:
Рубрика:
66
Адрес вектора прерывания с номером N вычисляется как N*4. В
младшем слове хранится значение IP, а в старшем CS.
Пример. Определить адрес прерывания 21h. Получим 21h * 4h
=84h. Просмотр содержимого четырёх байтов, начиная с 0084h в
сегменте 0000h
Показывает, что там храниться число
0000:0084 0DDE:048B,
где 0DDE – адрес сегмент, а 048B – адрес смещения подпрограммы
обработки прерывания с номером 21h.
Если написать свою подпрограмму обработки
прерывания и с помощью
функций, описанных ниже, записать её адрес (сегмент и смещение) в век-
тор прерывания, то при вызове данного прерывания его обработка будет
проходить по новой подпрограмме. Старый вектор прерывания, обычно,
сохраняется и перед завершением программы восстанавливается.
Каждая подпрограмма обработки прерывания, в отличие от обычно
подпрограммы, завершается командой
iret, которая похожа на команду ret,
но восстанавливает из стека кроме CS и IP ещё и регистр флагов.
7.2. Изменение вектора прерывания
MS-DOS предоставляет две функции 35h и 25h прерывания
21h для чтения и установки вектора прерывания.
Функция 35h
Выполняет чтение адреса подпрограммы обработки прерывания.
• Вызов:
ah = 35h
al = номер прерывания
• Возвращаемое значение:
Адрес вектора прерывания с номером N вычисляется как N*4. В младшем слове хранится значение IP, а в старшем CS. Пример. Определить адрес прерывания 21h. Получим 21h * 4h =84h. Просмотр содержимого четырёх байтов, начиная с 0084h в сегменте 0000h Показывает, что там храниться число 0000:0084 0DDE:048B, где 0DDE – адрес сегмент, а 048B – адрес смещения подпрограммы обработки прерывания с номером 21h. Если написать свою подпрограмму обработки прерывания и с помощью функций, описанных ниже, записать её адрес (сегмент и смещение) в век- тор прерывания, то при вызове данного прерывания его обработка будет проходить по новой подпрограмме. Старый вектор прерывания, обычно, сохраняется и перед завершением программы восстанавливается. Каждая подпрограмма обработки прерывания, в отличие от обычно подпрограммы, завершается командой iret, которая похожа на команду ret, но восстанавливает из стека кроме CS и IP ещё и регистр флагов. 7.2. Изменение вектора прерывания MS-DOS предоставляет две функции 35h и 25h прерывания 21h для чтения и установки вектора прерывания. Функция 35h Выполняет чтение адреса подпрограммы обработки прерывания. • Вызов: ah = 35h al = номер прерывания • Возвращаемое значение: 66
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »