С клавиатуры информация может вводиться следующими способами:
1) средствами MS-DOS
2) средствами BIOS
Последовательность действий при вводе с клавиатуры средствами MS-DOS такова.
1) Функция прерывания 21h вызывает драйвер клавиатуры.
2) Драйверу передается запрос на ввод символа из буфера клавиатуры
3) Драйвер обращается к нужной функции прерывания 16h BIOS
4) Эта функция читает нудный символ и передает его в драйвер.
5) Драйвер возвращает байты в MS-DOS
Существуют различные функции MS-DOS, осуществляющие ввод с клавиатуры.
Например: функция АН = 01h определяет ввод с ожиданиями. При этом осуществляется "эхо" на экран вводимых символов. Функция AH = 07h осуществляет ввод без “эха”. Эти и другие функции описаны во всех руководствах по системному программированию на ПК.
Ввод средствами BIOS осуществляется через прерывание 16h, с подключением функций BIOS. Например, функция BIOS AH = 01h осуществляет чтение без ожидания из буфера клавиатуры.
Пример программы ввода символа средствами MS-DOS с использованием функции AH = 01h на языке Си будет таким
vv () { _AH = 01h;
geninterrupt (0X21);
return _AL; }
На основании использования прерывания 21h и функций MS-DOS составлены все функции языка Си для ввода информации с клавиатуры. Простейшим примером является функция intgeteh (void) и др. Все они приведены в различных руководствах языка Си. В данном случае приведем некоторые функции, используемые для управления.
Так функция
# include <conio.h>
int rbhit (void)
осуществляет проверку пустоты буфера.. Если в буфере есть символ, то функция возвращает ненулевое значение, в противном случае возвращается нуль. Эта функция полезна при выходе с бесконечного цикла.
Функция # include <bios.h>
int bioskey (0)
очищает буфер клавиатуры, а функция
# include <bios.h>
int bioskey (1)
проверяет, пуст ли буфер клавиатуры.