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




Функции BIOS для работы с клавиатурой



Функции BIOS для работы с клавиатурой

Прерывание 16 BIOS имеет функции для различных типов клавиатур: обычной —

84 клавиши и двух типов расширенной клавиатуры — 101\102 и 122-клавишной.

Выяснить функциональные возможности клавиатуры позволяет функция 09п:

Вход: АН - 09h.

Выход: AL = битовое поле, установленные биты которого обозначают поддерживаемые функции: 7 - резерв; 6 — поддержка клавиатуры со 122 клавишами (и функций 20h-22h (int 16h)); 5 — поддержка расширенной клавиатуры со 101-102 клавишами (и функций 10h-12h (int 16h)); 4 — поддержка функции 0Ah (int 16h); 3 — поддержка функции 0З0бп (int 16h); 2 — поддержка функции 0305h (int 16h); 1 — поддержка функции 0304h (int 16h); 0 — поддержка функции 0З00п (int 16h).

Прежде чем вызывать эту функцию, необходимо удостовериться в том, что

она поддерживается данной версией BIOS. Сделать это можно, вызвав функцию

OcOh прерывания int 15h.

Вход: АН = COh получить конфигурацию.

Выход: CF = 1 — BIOS не поддерживает эту функцию; CF - 0 — в случае успеха: ES:BX — адрес конфигурационной таблицы в ROM-памяти; АН = состояние (ООп — успех; 8бп — функция не поддерживается).

Формат конфигурационной ROM-таблицы:

Смещение Размер Описание
00h 2 байта Число байтов в этой таблице
02h 1 байт Модель BIOS
03h 1 байт Подмодель BIOS
04h 1 байт Издание BIOS:

0 — 1-я редакция,

1 — 2-я редакция и т. д.

05h 1 байт 1-й байт свойств
06h 1 байт 2-й байт свойств
07h 1 байт 3-й байт свойств
08h 1 байт 4-й байт свойств
09h 1 байт 5-й байт свойств

Если в результате этого вызова бит б второго байта свойств установлен, то BIOS поддерживает функцию 09п прерывания int 16h, с помощью которой определяются функциональные возможности клавиатуры.

Вход: АН = 10h, 20h чтение символа с ожиданием (для 101-102- и 122-клавиш-ных клавиатур соответственно).

Выход: для обычных клавиш (АН = скан-код BIOS; AL = символ ASCII); для клавиш и комбинаций с расширенным кодом (АН = расширенный ASCII-код; AL = 0); для дополнительных клавиш (АН - расширенный ASCII-код; AL = 0Eh).

Для ввода строки символов данные функции необходимо использовать в цикле. На примере показанной ниже программы, используя отладчик, можно исследовать содержимое АХ при нажатии различных клавиш и их комбинаций.

;prg05_02.asm - программа на ассемблере для ввода строки ;с использований функции ввода символа 10h

.data

string db 5 dup (0) len_string =$-string adr_stringdd string .code

mov cx,len_string

les di.adr_string ml: mov ah.O10h

int 16h

stosb

loop ml

Программа вводит 5 символов и сохраняет их в строке str.




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