logo search
Полный текст учебника

Программирование работы с клавиатурой

При программировании работы с клавиатурой могут быть использованы прерывание 16Н BIOS и прерывание 21Н (AH = 1, 6, 7, 8, A, B, C) DOS.

Ввод с клавиатуры по прерыванию 21H DOS.

  1. Чтение строки символов с буферизацией: AH = 0Ah. Для инициализации такого чтения необходимо:

buf DB n, 0, 0, ... , 0, 0

(buf — имя поля, которое, в принципе, может быть и любым другим).Количество нулей в директиве должно быть на 2 больше, чем n (n — максимальное количество вводимых символов), на место первого нуля после ввода будет записано количество фактически введенных символов, на место последующих нулей будут введены ASCII-коды символов строки и еще один 0 для кода клавиши Enter — 13;

При выполнении рассматриваемого прерывания управление прерванной (основной) программе не возвратится до тех пор, пока не нажата клавиша Enter.

При нажатии каждой очередной клавиши ее код записывается в буфер клавиатуры и отображается на дисплее, но из буфера поступит в основную программу (в поле buf) только после нажатия клавиши Enter. Если до Enter клавиш нажато больше, чем указано в буфере, то раздастся звуковой сигнал и лишние символы восприняты не будут.

Пример фрагмента программы чтения строки символов:

buf DB 9,0,0,0,0,0,0,0,0,0,0,0

mov AH, 0AH

mov DX, offset buf

int 21H

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