Сборник по задачам и примерам Assembler

     

Получение состояния флагов клавиатуры (02h, 12h, 22h int 16h)



Получение состояния флагов клавиатуры (02h, 12h, 22h int 16h)

BIOS предоставляет функцию 02h для получения состояния световых индикаторов клавиатуры и некоторых управляющих клавиш.

Вход: АН = 02h получить состояние флагов клавиатуры (для 84-клавишной клавиатуры).

Выход: AL = битовое поле, установленные биты которого соответствуют состоянию следующих флагов: 7 — режим вставки активен; 6 — индикатор CapsLock включен; 5 — индикатор NumLock включен; 4 — индикатор ScrollLock включен; 3 — нажата клавиша Alt (любая клавиша Alt на 101-102-клавишной клавиатуре); 2 — нажата клавиша Ctrl (любая клавиша Ctrl на 101-102-клавишной клавиатуре); 1 — нажата левая клавиша Shift; 0 — нажата правая клавиша Shift.

Поддержка расширенных клавиатур осуществляется функциями 12h и 22h BIOS.

Вход: АН = 12h, 22h получить состояние флагов клавиатуры (для 101-102- и 122-клавишных клавиатур).

Выход: AL = первое битовое поле, установленные биты которого соответствуют состоянию флагов, возвращаемых в регистре AL функцией 02п; АН = второе битовое поле, установленные биты которого соответствуют следующему состоянию флагов: 7 — нажата клавиша SysReq (SysRq); 6 - нажата клавиша CapsLock; 5 — нажата клавиша NumLock; 4 — нажата клавиша Scrolllock; 3 — нажата правая клавиша Alt; 2 — нажата правая клавиша Ctrl; 1 — нажата левая клавиша Alt; 0 — нажата левая клавиша Ctrl.

Кроме этого, состояние данных флагов можно прочитать из оперативной памяти по адресам: 0040h:0017h (AL) и O040h:0010h (АН).



Содержание раздела