Проверка нажатия управляющих клавиш - Assembler

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

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

Здравствуйте. Помогите, пожалуйста, начинающему. Следующий код должен выводить сообщение в случае нажатия клавиши, а именно: Правого шифта. Не работает, а точнее сообщение выводится в любом случае(( Заранее спасибо!
use16
org 100h
jmp start
;---------------------
shiftt db 'RIGHT SHIFT PRESSED$'
;---------------------
start:
        mov ax,03h
        int 10h
prog:
        xor al,al
        mov ah,02h
        int 16h
        test al,00000001b
        jz me
me:
        mov ah,09h
        mov dx,shiftt
        int 21h
 
        mov ah,08h
        int 21h
 
        mov ax,4c00h
        int 21h

Решение задачи: «Проверка нажатия управляющих клавиш»

textual
Листинг программы
prog:
        mov ah,02h
        int 16h
        test al,00000001b
        jz prog
 
        mov ah,09h
        mov dx,shiftt
        int 21h
 
        mov ah,08h
        int 21h
 
        mov ax,4c00h
        int 21h

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

В данном коде выполняется следующая последовательность действий:

  1. Переменная ah устанавливается в значение 02h. Это необходимо для того, чтобы указать сервисной процедуре int 16h, что мы хотим получить информацию о нажатии клавиш.
  2. Выполняется команда int 16h. Эта команда вызывает сервисную процедуру, которая проверяет, были ли нажаты клавиши. Если да, то она возвращает в регистр al код нажатой клавиши.
  3. Переменная al проверяется на наличие единицы (00000001b). Если единица есть, то это означает, что была нажата клавиша.
  4. Если единица есть, то выполняется переход к метке prog. Это позволяет повторять цикл проверки нажатия клавиш до тех пор, пока клавиша не будет отпущена.
  5. Переменная ah устанавливается в значение 09h. Это необходимо для того, чтобы вывести на экран сообщение.
  6. Переменная dx устанавливается в значение shiftt. Это значение используется в качестве аргумента для функции вывода сообщения int 21h.
  7. Выполняется команда int 21h. Эта команда выводит на экран сообщение.
  8. Переменная ah устанавливается в значение 08h. Это необходимо для того, чтобы прочитать символ из стандартного ввода.
  9. Выполняется команда int 21h. Эта команда считывает символ из стандартного ввода и сохраняет его в регистре al.
  10. Переменная ax устанавливается в значение 4c00h. Это значение используется в качестве аргумента для функции окончания работы программы int 21h.
  11. Выполняется команда int 21h. Эта команда завершает работу программы.

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


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

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

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