Написать программу на языке ассемблера, которая обрабатывает нажатия клавиш на клавиатуре - Assembler
Формулировка задачи:
Народ, пожалуйста помогите.
Написать программу на языке ассемблера, которая обрабатывает нажатия клавиш на клавиатуре и выдаёт на экран следующую ин-формацию:
1) ASCII-код символа, если была нажата алфавитно-цифровая клавиша основной клавиатуры.
2) Строку «Расширенный код», если была нажата функциональная клавиша, клавиши дополнительной клавиатуры или комбинации клавиш с «ALT» и «CTRL».
Программа должна предварительно чистить буфер клавиатуры. Информация о каждом нажатии должна выводиться в новой строке (предыдущие сведения не затираются). Символы должны вводиться без эха. Программа должна завершиться по нажатию клавиши «ESC».
Сам не понимаю ассемблер. Поэтому рассчитываю на вашу помощь. Буду рад любой помощи! Заранее благодарен.
Решение задачи: «Написать программу на языке ассемблера, которая обрабатывает нажатия клавиш на клавиатуре»
textual
Листинг программы
xor ax,ax int 16h ;getch(); or al,al ;if( (key == 0) || (key == 0xe0) ) jnz NormalKey cmp al, 0E0h jnz NormalKey
Объяснение кода листинга программы
xor ax,ax
- инициализация регистра ax нулевым значением;int 16h
- обращение к сервисной процедуре BIOS, которая обрабатывает нажатие клавиш на клавиатуре и возвращает код нажатой клавиши в регистре al;or al,al
- установка флага, который будет использоваться для проверки нажатой клавиши;jnz NormalKey
- переход к меткеNormalKey
, если флаг не равен нулю;cmp al, 0E0h
- сравнение кода нажатой клавиши с кодом клавишиE0
, который соответствует нажатию клавишиCtrl
;jnz NormalKey
- переход к меткеNormalKey
, если код нажатой клавиши не равенE0
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д