Аппаратное обеспечение IBM PC



         

Аппаратное прерывание клавиатуры - часть 2


Указателями на начало и конец клавиатурного буфера обычно управляют обработчики прерываний INT 09h и INT 16h.

Программа извлекает из буфера коды нажатых клавиш, используя различные функции прерывания INT 16h.

Помимо управления содержимым буфера клавиатуры, обработчик прерывания INT 09h отслеживает нажатия на так называемые переключающие клавиши - NumLock, ScrollLock, CapsLock, Ins. Состояние этих клавиш записывается в область данных BIOS в два байта с адресами 0000h:0417h и 0000h:0418h.

Формат байта 0000h:0417h:

Биты Значение

0 Нажата правая клавиша Shift.

1 Нажата левая клавиша Shift.

2 Нажата комбинация клавиш Ctrl-Shift с любой стороны.

3 Нажата комбинация клавиш Alt-Shift с любой стороны.

4 Состояние клавиши ScrollLock.

5 Состояние клавиши NumLock.

6 Состояние клавиши CapsLock.

7 Состояние клавиши Insert.

Формат байта 0000h:0418h:

Биты Значение

0 Нажата левая клавиша Shift вместе с клавишей Ctrl.

1 Нажата левая клавиша Shift вместе с клавишей Alt.

2 Нажата клавиша SysReq.

3 Состояние клавиши Pause.

4 Нажата клавиша ScrollLock.

5 Нажата клавиша NumLock.

6 Нажата клавиша CapsLock.

7 Нажата клавиша Insert.

Если вы изменяете состояние светодиодов на панели клавиатуры, не забывайте устанавливать соответствующие биты в байтах состояния клавиатуры.

Программой обработки прерывания INT 09h отслеживаются некоторые комбинации клавиш. В таблице приведены эти комбинации и действия, выполняемые обработчиком прерывания при их обнаружении:

Комбинация клавиш Выполняемые действия

Ctrl-Alt-Del Сброс и перезагрузка системы.

Ctrl-NumLock, Перевод машины в состояние ожидания Pause до нажатия любой клавиши.

Shift-PrtSc Распечатка на принтере содержимого видеопамяти.

Ctrl-Break Выполнение прерывания INT 1Bh, завершающего работу программы.

Многие типы клавиатур имеют отдельную альтернативную цифровую панель, напоминающую клавиатуру калькулятора. Если одновременно с нажатием на клавишу Alt набрать число на этой панели (не большее, чем 255 и не равное 0), то это число будет помещено в буфер клавиатуры, как будто бы оно было введено нажатием на одну клавишу. Это число будет также записано в слове по адресу 0000h:0419h в области данных BIOS.

При переполнении внутреннего буфера клавиатуры или буфера, расположенного в области данных BIOS, программа-обработчик прерывания INT 09h генерирует звуковой сигнал.

При составлении программ для MS-DOS у вас едва ли появится необходимость непосредственного манипулирования содержимым буфера клавиатуры - вы можете использовать прерывание BIOS INT 16h для выполнения практически всех клавиатурных операций.

В следующем разделе мы займемся непосредственно изучением средств работы с клавиатурой, предоставляемых в распоряжение прерыванием BIOS INT 16h.




Содержание  Назад  Вперед