Другие языки программирования и технологии

09h прерывание. Дайте пожалуйста описание функций 09h прерывания

2 568
Это аппаратно генерируемое прерывание (IRQ 1) выполняется при каждом нажатии и отпускании клавиши. код ROM-BIOS интерпретирует это, сохраняя значения в буфере клавиатуры по адресу 0:041e. Он также обрабатывает специальные случаи клавиш PrtSc и SysReq, и отслеживает состояние клавиш Shift и различных Lock.

Резидентные popup-программы, которые обычно предусматривают "кнопку вызова", перехватывают INT 09H и проверяют на определенный ключ примерно так:

push ax
in al,60H ;читать ключ
cmp al,POP_KEY ;это кнопка вызова?
je do_pop ; да, активизировать popup
; нет, уйти на исходный обработчик
pop ax
jmp cs:[int9_vect] ;переход на первоначальный обработчик
do_pop: ;------следующий код необходим для отработки аппаратного прерывания
in al,61H ;взять значениe порта управления клавиатурой
mov ah,al ; сохранить его
or al,80h ;установить бит разрешения для клавиатуры
out 61H,al ; и вывести его в управляющий порт
xchg ah,al ;извлечь исходное значение порта
out 61H,al ; и записать его обратно
mov al,20H ;послать сигнал "конец прерывания"
out 20H,al ; контроллеру прерываний 8259
;------дальше - прочие проверки, и наконец - активизация popup

ps: и еще много тут
http://frolov-lib .ru/books/bsp/v02/ch2_3.htm (убрать пробел)

Клавиатура подключена к линии прерывания IRQ1. Этой линии соответствует прерывание INT 09h.
Клавиатурное прерывание обслуживается модулями BIOS. Драйверы клавиатуры и резидентные программы могут организовывать дополнительную обработку прерывания INT 09h. Для этого может быть использована цепочка обработчиков прерывания. В первой книге первого тома мы приводили примеры расширения обработчика прерывания INT 09h.
Как работает стандартный обработчик клавиатурного прерывания, входящий в состав BIOS?
Этот обработчик выполняет следующие действия:
читает из порта 60h скан-код нажатой клавиши;
записывает вычисленное по скан-коду значение ASCII-кода нажатой клавиши в специальный буфер клавиатуры, расположенный в области данных BIOS;
устанавливает в 1 бит 7 порта 61h, разрешая дальнейшую работу клавиатуры;
возвращает этот бит в исходное состояние;
записывает в порт 20h значение 20h для правильного завершения обработки аппаратного прерывания.
Обработчик прерывания INT 09h не просто записывает значение ASCII-кода в буфер клавиатуры. Дополнительно отслеживаются нажатия таких комбинаций клавиш, как Ctrl-Alt-Del, обрабатываются специальные клавиши PrtSc и SysReq. При вычислении кода ASCII нажатой клавиши учитывается состояние клавиш Shift и CapsLock.
ИИ
Иван Иванов
73 928
Лучший ответ