Вывод сообщения после комбинации клавиш - 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{разрешаем прерывания}

Объяснение кода листинга программы

  1. Запрещаем аппаратные прерывания с помощью команды cli.
  2. Читаем сканкод с помощью команды in al, 60h.
  3. Происходит стандартный выход из обработчика клавиатуры с помощью команд in al, 61h, push ax, or al, 80h, out 61h, al, pop ax, out 61h, al.
  4. Переменная al получает значение 20h с помощью команды mov al, 20h.
  5. Выводим значение переменной al на порт 20h с помощью команды out 20h, al.
  6. Разрешаем прерывания с помощью команды sti.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы