Функция 00h (10h). Чтение символа клавиатуры с ожиданием.
Читает из кольцевого буфера ввода символ и скан-код. После считывания они удаляются из буфера и возвращаются в регистре AX. Если буфер пуст, ожидает ввода. Каждой клавише на клавиатуре соответствует так называемый скан-код, соответствующий только этой клавише. Этот код посылается клавиатурой при каждом нажатии и отпускании клавиши и обрабатывается в BIOS обработчиком прерывания Int 09h. Функция 00h даёт возможность получить код нажатия, не перехватывая этот обработчик. Если нажатой клавише соответствует ASCII-символ, то:
AL – ASCII-код символа, AH – скан-код клавиши.
Если нажатой клавише соответствует расширенный ASCII-код, то:
AL – 00h, AH – расширенный ASCII-код.
Вызов: AH = 00h (83/84-key).
Возврат: AL = ASCII-код символа, изображённый на клавише/00h,
AH = скан-код/расширенный ASCII-код клавиши.
Функция 10h (AH = 10h) – усовершенствованный вариант функции 00h для расширенной клавиатуры (101/102-key). Позволяет получить расширенные ASCII-коды для клавиш F11, F12, а также для ряда других комбинаций. В качества признака управляющих клавиш или их комбинаций, помимо значения 00h, используются 0Ah, 0Dh и E0h.
Функция 01h (11h). Поверка буфера клавиатуры на наличие в нём символа.
Определяет, имеются ли в кольцевом буфере ожидающие ввода символы; возвращает флаг ожидания и сам символ при его наличии. Однако символ и его скан-код не извлекаются из буфера и могут быть снова получены при повторном вызове функции 00h Int 16h. Данная функция относится к числу асинхронных: определив состояние буфера ввода, она возвращает управление программе.
Вызов: AH = 01h (83/84-key), 11h(101/102-key).
Возврат: ZF = 1, если буфер пуст и ZF = 0, если в буфере имеется ожидающий считывания символ. В этом случае:
AL = ASCII-код символа/00h, AH = скан-код клавиши/расширенный ASCII-код.
Функция 11h (AH = 11h) – усовершенствованный вариант функции 01h для расширенной клавиатуры (101/102-key). Позволяет получить расширенные ASCII-коды для клавиш F11, F12, а также для ряда других комбинаций. В качестве признака управляющих клавиш или их комбинаций, помимо значения 00h, используются 0Ah, 0Dh и E0h.
Функция 02h (12h). Получение флагов клавиатуры.
Возвращает байт флагов клавиатуры, описывающих состояние управляющих клавиш, записанное в байте (слове) области данных BIOS по адресу 0000h:0417h.
Вызов: AH = 02h
Возврат: AL=1-ый байт флагов клавиатуры.
Биты байта имеют следующие значения:
– 0 : 1 – правая Shift нажата
– 1 : 1 – левая Shift нажата
– 2 : 1 – Ctrl (любая) нажата
– 3 : 1 – Alt (любая) нажата
– 4 : 1 – режим Scroll Lock
– 5 : 1 – режим Num Lock
– 6 : 1 – режим Caps Lock
– 7 : 1 – режим Insert активен
Функция 12h (AH = 12h) – усовершенствованный вариант функции 02h для расширенной клавиатуры (101/102-key). Выводит такое же значение байта, как и функция 02h, по адресу 0000h:0417h, и, дополнительно, второй байт статуса клавиатуры (адрес 0000h:0418h) со следующими значениями: