logo search
несколько программ / bsp33

Проверка буфера на наличие в нем символов

Функция 01h поможет вам проверить состояние буфера клавиатуры - есть там коды нажатых клавиш или нет. При этом программа не переводится в состояние ожидания, даже если буфер клавиатуры пуст. В этом случае в регистре флагов флаг ZF устанавливается в единицу и управление возвращается программе.

Формат вызова функции представлен ниже:

Регистры на входе:

AH = 01h

Регистры на выходе:

ZF = 0, если в буфере имеется код нажатой клавиши;

ZF = 1, если буфер клавиатуры пуст;

AL = код ASCII символа или 0, если AH содержит расширенный код ASCII символа;

AH = скан-код или расширенный код ASCII символа, если AL=0

Эту функцию удобно использовать во время выполнения какого-либо длительного процесса (например, форматирования диска или передачи данных по линии связи) для прерывания этого процесса по запросу пользователя.

Кроме того, функцию 01h можно применять вместе с функцией 00h для сброса содержимого клавиатурного буфера. Для этого в цикле повторяют вызов функции 01h, вслед за которым идет вызов функции 00h при условии, что буфер клавиатуры не пуст.

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