…
Buffer db 11 ; Нулевой байт буфера
Entered db (?) ; Число введенных символов
String db 11 dup (?) ; Введенные символы
…
Lea dx, buffer ; Адрес буфера в dx
Mov ah, 0ah ; Номер функции в аh
Int 21h ; Вызов функции
Функция 0Bh – выполняет опрос состояния буфера клавиатуры. Вызов:
ah = 0Bh
Возвращаемое значение:
аl = 00h, если нет символа в буфере клавпиатуры;
al = ffh, если есть символ в буфере клавиатуры.
Примечание. Устанавливает значение AL в зависимости от наличия символов в буфере клавиатуры. Часто используются в задачах, действующих при нажатии определенных клавиш. Комбинация клавиш Ctrl/ (или Ctrl/Break) прекращает выполнение программы пользователя.
Пример выполнения работы
Ввести строку с клавиатуры, посчитать, сколько и каких десятичных цифр имеется во введенной строке, посчитанные значения вывести на экран. Решение представлено в листинге 5.4.
Листинг 5.4 Текст программы:
Data segment
COUNT db 10 dup (0) ; счетчик количества цифр
CIFR db ‘0123456789ABCDEF’ ; таблица преобразования цифр
IN_STR db 80, ?, 82 dup (?) ; буфер ввода
OUT_STR db 0Dh, 0Ah, ?,’-‘,?, ?,’$’ ; буфер вывода
Data ends
Code segment
Assume cs:code, ds:data
START: mov ax, data
Mov ds, ax
; Ввод строки
Lea dx, IN_STR
Mov ah, 0ah
Int 21h
; Обработка
Xor ah, ah ; обнуление старшего байта AX
lea bx, IN_STR+2 ; адрес начала введённой строки