Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 39

Из буфера области данных BIOS коды могут быть выбраны прикладной программой или DOS посредством прерывания INT 16h, являющегося основным способом чтения данных с клавиатуры и определения ее статуса. При вызове INT 16h номер функции передается в регистре AL. Для получения системных кодов и информации о состоянии клавиатуры, работающей в режиме 1, необходимо использовать функции 00h, 01h и 02h, а для доступа к кодам новых клавиш расширенной клавиатуры — функции 10h, 11h и 12h. В качестве примера использования прерывания 16h на рисунке 5.2 приведен фрагмент программы для ввода с клавиатуры.

Таблица 5.6 — Функции прерывания INT 16h

Код

Функция

Параметры

Результаты

0

Ввод знака (с ожиданием)

Нет

AL — код знака

AH — скан-код

1

Проверка наличия знака

Нет

AL — код знака

AH — скан-код

ZF —бит наличия знака

2

Состояние регистров клавиатуры

Нет

AL — первый байт состояния

; Распознавание источника ASCII-кодов 8, 9, 13 и 27:

; 1) BackSpase, Tab, Enter и Escape или 2)Ctrl-H,-I,-M,-[

;--- Получение кода нажатой клавиши и определение ее типа

next:

       MOV   AH,0    ;Функция ввода с клавиатуры

       INT   16H     ;Получаем введенный код

       CMP   AL,0    ;Проверка на расширенный код

       JE    extended_code  ;если ДА, то на спец.процедуру