Организовать собственный обработчик прерывания от клавиатуры - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно организовать собственный обработчик прерывания от клавиатуры, не используя прерывание int 16h. Объясните, как это реализовать. как организовать ожидание ввода клавиши в программе?

Решение задачи: «Организовать собственный обработчик прерывания от клавиатуры»

textual
Листинг программы
  1. ;------ Очиcткa буфepa клавиатуры пepeд нaжaтием клaвиши --------------//
  2.         push  ds  0                 ;
  3.         pop   ds                    ;
  4.         mov   al,byte[ds:41Ah]      ; выравниваем
  5.         mov   byte[ds:41Ch],al      ;     ..голову и хвост буфера
  6.  
  7. ;------ Пpoвepяeм нaличиe cимвoлa в буфepe ----------------------------//
  8. sleep:  mov   ax,word[ds:41Ah]      ;
  9.         mov   bx,word[ds:41Ch]      ;
  10.         cmp   ax,bx                 ; голова равна хвосту?
  11.         je    sleep                 ; да - циклимся..
  12.  
  13. ;------ Читаем ASCII/SCAN нажатой клавиши -----------------------------//
  14.         mov   si,ax                 ;
  15.         add   si,400h               ; SI = адрес начала буфера
  16.         lodsw                       ; берём от туда слово
  17.         pop   ds                    ;
  18.         cmp   al,13                 ; Enter --> выход!
  19.         je    exit                  ;
  20.         push  ax ax ax              ; запоминаем клавишу.

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

  1. Очистка буфера клавиатуры:
    • push ds, 0
    • pop ds
    • mov al, byte[ds:41Ah]
    • mov byte[ds:41Ch], al
  2. Проверка наличия символа в буфере:
    • mov ax, word[ds:41Ah]
    • mov bx, word[ds:41Ch]
    • cmp ax, bx
    • je sleep
  3. Чтение ASCII/SCAN нажатой клавиши:
    • mov si, ax
    • add si, 400h
    • lodsw
    • pop ds
    • cmp al, 13
    • je exit
    • push ax

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы