Сборник по задачам и примерам Assembler

     

Проверка наличия символа (01h, 11h, 21h int 16h)



Проверка наличия символа (01h, 11h, 21h int 16h)

Вход: АН = Olh проверка наличия символа (для 84-клавишной клавиатуры).

Выход: если ZF=O, то регистры АН и AL содержат: для обычных клавиш (АН = скан-код BIOS; AL = символ ASCII); для клавиш и комбинаций с расширенным ASCII-кодом (АН = расширенный ASCII-код; AL = 0); если ZF=1, то буфер пуст.

Функция 01h получает информацию о символе, не считывая его из буфера клавиатуры. Исключение составляют нажатия дополнительных клавиш на расширенных клавиатурах, не совместимых с 83\84-клавишными клавиатурами. В процессе проверки функцией Olh они удаляются из буфера. Поэтому при работе с расширенными клавиатурами необходимо использовать функции 11h и 21h.

Вход: АН = llh, 21h проверка наличия символа (для 101-102- и 122-клавишных клавиатур соответственно).

Выход: если ZF=O, то регистры АН и AL содержат: для обычных клавиш (АН = BIOS скан-код; AL - символ ASCII); для клавиш и комбинаций с расширенным кодом (АН = расширенный ASCII-код; AL = 0); для дополнительных клавиш (АН = расширенный ASCII-код; AL = 0eh); если ZF=0, то буфер пуст. В большинстве случаев работу с результатами выполнения данной функции логично начинать с анализа флага ZF (командами JZ или JNZ). Что же касается содержимого регистра АХ, то оно аналогично содержим00h int 16h :пересылаем его:

stosb

jmpml



Содержание раздела