е менше двох символів ("а" і "А", "1" і "!", "2" і "@" і т.д.), то кожному скан-кодом відповідають, як мінімум, два коди ASCII. У процесі трансляції програма int09h аналізує стан прапорів, так що якщо натиснута, наприклад, клавіша Q (скан-код 10h, код ASCII букви Q - 51h, а букви q - 7lh), то формується двобайтовий код 1071h, але якщо клавіша Q натиснута при натиснутій клавіші (зміна регістру), то результат трансляції складе 1051h. Той же код 1051h вийде, якщо при натисканні клавіші Q був включений режим (заголовні літери), однак при включеному режимі і утримуючи клавішу утворюється код 1071h, оскільки в такій ситуації клавіша на час натискання переводить клавіатуру в режим нижнього регістрі (малі літери).
Отриманий в результаті трансляції двобайтовий код засилається програмою int09h в кільцевій буфер введення, який служить для синхронізації процесів введення даних з клавіатури і прийому їх виконуваної комп'ютером програмою. Об'єм буфера становить 16 слів, при цьому коди символів витягуються з нього в тому ж порядку, в якому вони в нього надходили. За станом буфера стежать два покажчика. У хвостовому покажчику (слово за адресою 40: lCh) зберігається адресу першої вільної комірки, в головному покажчику (40: 1Ah) - адресу самого старого коду, прийнятого з клавіатури і ще не затребуваного програмою. Обидва адреси являють собою зміщення відносно початку області даних BIOS, тобто числа від 1Eh до 3Ch. На початку роботи, коли буфер порожній, обидва покажчика - і хвостовий, і головний, вказують на першу клітинку буфера.
Програма int09h, сформувавши двобайтовий код, поміщає його в буфер за адресою, що знаходиться в хвостовому покажчику, після чого цю адресу збільшується на 2, вказуючи знову на першу вільну комірку. Кожне наступне натискання на яку-небудь клавішу додає в буфер черговий двобайтовий код і зміщує хвостовій покажчик.
Виконувана програма, бажаючи отримати код натиснутої клавіші, повинна звернутися для цього до небудь системних засобів - функціям введення з клавіатури DOS (переривання 21h) або BIOS (переривання 16h). Системні програми за допомогою драйвера клавіатури (точніше кажучи, об'єднаного драйвера клавіатури і екрану, так званого драйвера консолі з ім'ям CON) зчитують з кільцевого буфера вміст комірки, адреса якої знаходиться в головному покажчику, і збільшує ця адреса на 2. Таким чином, програмний запит на введення з клавіатури фактично виконує прийом коди не з клавіатури, а з кільцевого буфера.
Хвостовий покажчик, переміщаючись по буферу в процесі занесення до нього кодів, доходить, нарешті, до кінця буфера (адреса 40h: 3Ch). У цьому випадку при надходженні чергового коду адреса в покажчику НЕ збільшується, а, навпаки, зменшується на довжину буфера. Тим самим покажчик повертається в початок буфера, потім продовжує переміщатися по буферу до його кінця, знову повертається в початок і так далі по кільцю. Аналогічні маніпуляції в...