Скачиваний:
35
Добавлен:
02.05.2014
Размер:
188.42 Кб
Скачать

2.5.1. Буферизованный ввод с эхо-выводом

На входе: AH = 01h.

На выходе: AL = ASCII-код символа или 0. Если регистр

содержит 0, то следующий вызов этой же

функции возвратит в регистре AL

расширенный ASCII-код символа.

Функция проверяет комбинации клавиш

Ctrl-C и Ctrl-Break.

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

Введенный символ выводится на стандартное устройство вывода.

Если программа в качестве ASCII-кода получила 0, она должна вызвать эту функцию еще один раз. Во второй раз регистр AL будет содержать расширенный ASCII-код нажатой клавиши.

2.5.2. Буферизованный ввод без эхо-вывода

На входе: AH = 08h.

На выходе: AL = ASCII-код символа или 0. Если регистр

содержит 0, то следующий вызов этой же

функции возвратит в регистре AL

расширенный ASCII-код символа.

Функция проверяет комбинации клавиш

Ctrl-C и Ctrl-Break.

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

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

2.5.3. Нефильтрованный ввод без эхо-вывода

На входе: AH = 07h.

На выходе: AL = ASCII-код символа или 0. Если регистр

содержит 0, то следующий вызов этой же

функции возвратит в регистре AL

расширенный ASCII-код символа.

Функция не проверяет комбинации клавиш

Ctrl-C и Ctrl-Break.

Если буфер клавиатуры пуст, выполнение программы задерживается до нажатия на любую клавишу.

Эту функцию удобно использовать в тех случаях, когда завершение программы по нажатию комбинаций клавиш Ctrl-C или Ctrl-Break по тем или иным причинам нежелательно. Например, программа держит в оперативной памяти буфера для данных, которые перед завершением работы обязательно должны быть записаны на диск. Если оператор в неподходящий момент времени нажал Ctrl-C и программа аварийно завершила работу, содержимое буферов будет потеряно.

2.5.4. Ввод/вывод на консоль

На входе: AH = 06h;

DL = 0FFh - для ввода символа с консоли;

или:

DL = код символа, не равный 0FFh - для

вывода символа на консоль.

На выходе: ZF = 0, если в буфере имеется код нажатой

на клавиатуре клавиши;

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

AL = ASCII-код символа или 0, если AH содержит

расширенный ASCII-код символа.

Функция проверяет комбинации клавиш

Ctrl-C и Ctrl-Break.

Функция 06h может использоваться как для ввода с консоли, так и для вывода символов на консоль. Режим работы функции зависит от содержимого регистра DL при вызове функции. Если этот регистр содержит значение 0FFh, функция выполняет ввод с консоли, в противном случае символ, код которого записан в этот регистр, выводится на консоль.

Очевидно, что с помощью этой функции нельзя вывести на консоль символ с кодом 0FFh.

Основное отличие функции 06h от всех описанных ранее заключается в том, что эта функция не ожидает, пока оператор нажмет на клавишу. Если буфер клавиатуры пуст, функция просто устанавливает флаг процессора ZF в 1.

Если в буфере клавиатуры имеются символы, флаг ZF сбрасывается и в регистр AL функция записывает ASCII-код символа.

Соседние файлы в папке input_devices