Из буфера области данных 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 ;если ДА, то на спец.процедуру
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.