Вывод сообщения после комбинации клавиш - Assembler
Формулировка задачи:
Здравствуйте, срочно нужна помощь! требуется написать обработчик прерываний от клавиатуры, который после нажатия Ctrl(L)+Shift(L) формирует в буфере клавиатуры макроопределения C -> cprintf(); F -> for() {}; W -> while() {}. Повторное нажатие данной комбинации отменяет этот режим.
Решение задачи: «Вывод сообщения после комбинации клавиш»
textual
Листинг программы
cli{запрещаем аппаратные прерывания} in al,60h{читаем сканкод} . . . {стандартный выход из обработчика клавиатуры} in al,61h push ax or al,80h out 61h,al pop ax out 61h,al mov al,20h out 20h,al sti{разрешаем прерывания}
Объяснение кода листинга программы
- Запрещаем аппаратные прерывания с помощью команды cli.
- Читаем сканкод с помощью команды in al, 60h.
- Происходит стандартный выход из обработчика клавиатуры с помощью команд in al, 61h, push ax, or al, 80h, out 61h, al, pop ax, out 61h, al.
- Переменная
al
получает значение 20h с помощью команды mov al, 20h. - Выводим значение переменной
al
на порт 20h с помощью команды out 20h, al. - Разрешаем прерывания с помощью команды sti.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д