Інтерфейсом програм в персональному комп'ютері з клавiатурою є переривання 16h BIOS. Далі приводиться опис його функцій.

АН=00h - читання з очікуванням двухбайтового коду з буферу клавiатури. Прочитаний код повертається в регістрі АХ: молодший байт - в регістрі AL, старший - в АН. Якщо натиснута ASCII-клавіша, в AL розміщуюється ASCII-код символу, в АН - скэн-код. При натиску спеціальних клавіш AL рівний 0, а в АН повертається розширений скэн-код.

АН=01h - читання без очікування двобайтового коду з буферу клавiатури. Якщо буфер порожній, в 1 виставляється прапор нуля ZF. В противному випадку в АХ повертається двобайтовий код з буферу клавiатури, але просування покажчика "голови" буферу не виконується, т. ч. код "залишається" в буфері.

АН=02h - визначення стану шіфт - і тригерних клавіш. В регістрі AL повертається вміст байту за адресою 40:17h.

Описані далі функції переривання 16h підтримуються тільки BIOS, дата якого ‑ 15.11.85 і пізніше.

АН=03h - встановлення затримки і частоти повторення клавiатури. Якщо клавіша залишається в натиснутому стані на протязі часу, що перевищує встановлену затримку (delay), апаратура комп'ютера починає повторення передачі прямого скэн-коду клавіші з частотою, що називається частотою повторення (typematic rate). При виконанні функції AL=5 в ВН задається затримка (0 відповідає 250 мс, 1 - 500 мс, 2-750 мс, 3-1 с), в BL - частота повторення (0 відповідає частоті 30 раз/с, 2 - 26 раз/с,..., 1Eh - 6 раз/с, 1Fh - 2 рази/с.

АН=05h - запис в буфер клавiатури двухбайтового коду клавіші, що повинен поміщуватися в регістр СХ: в CL молодший байт, в СН - старший. Після виходу з функції регістр AL=0, якщо код клавіші записаний в буфер. Якщо ж буфер порожній, AL=1.

Функція АН=05h не має аналогів в бібліотеці Turbo С і може використовуватися для імітації натиснень клавіш в демонстраційних програмах, програмах переносу тексту і т.д.

Функції АН =10 - 12h є аналогами функцій 00-02h, але передвизначені для використання в комп'ютерах з клавiатурою 101/102 клавіші.

Наведемо приклад функції enter_kb_BIOS (), призначеного для запису двобайтового коду клавіші key_code в буфер клавiатури. Працює для версій BIOS, подібних BIOS IBM PC AT, що датувалися не раніше 15.11.85, і IBM PC XT, що датувалися не раніше 10.1.86. Функція повертає 0 у випадку успіху і-1, якщо буфер порожній.

/*L7_5. C/

#include <dos. h>
int
enter_kb_BIOS(unsigned key_code){
 struct
REGРАСK r;
 r. r_cx=key_code
;
 r. r_ax=0х0500;
 intr
(0х16, &r);
 return
r. r_ax & 0x00ff;
}