Вывод названия функциональных клавиш, которые нажаты - Assembler

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

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

я делаю лабку, где нужно выводить название клавиши которую нажали, она еще недодалана, но там есть проблемка которую я не понимаю, когда нажимаю кнопку, которую уже прописал, выводиться она и все строки, что инициализированая после строки, что я вывожу
.model tiny
.code
data segment
mesH db'Home',10,13,'$'
mesE db 'End',10,13,'$'
mesEnt db 'Enter',10,13,'$'
mesD db 'Del',10,13,'$'
mesIn db 'Insert',10,13,'$'
mesPU db 'PgUp',10,13,'$'
mesPD db 'PgDn',10,13,'$'
eror db 'enter symbol is not functional!', 10, 13, '$'
kod db ?
data ends
code segment
assume cs:code, ds:data
begin:
mov ax,data
mov ds,ax
mov ax,2h
int 10h
 
enterSymbol:
    mov ah,00
    int 16h
    cmp al,00
    jne erorSymbol
    cmp ah, 49h
    jne cont0
        call mesPgUp
        jmp enterSymbol
cont0:
    cmp ah, 51h
    jne cont1
        call mesPgDn
        jmp enterSymbol
cont1:
    cmp ah, 52h
    jne cont2
        call mesInsert
        jmp enterSymbol
cont2:
    cmp ah, 53h
    jne cont3
        call mesDel
        jmp enterSymbol
cont3:

    cmp ah, 47h
        call mesHome
        jmp exit1

exit1:
mov ax,4c00h
int 21h
 
proc mesHome
    mov ah,9
    lea dx,mesH
    int 21h
mesHome endp
proc mesEnd
    mov ah,9
    lea dx,mesE
    int 21h
mesEnd endp
proc mesEnter
    mov ah, 9
    lea dx, mesEnt
    int 21h
mesEnter endp
proc mesDel
    mov ah, 9
    lea dx, mesD
    int 21h
mesDel endp
proc mesInsert
    mov ah, 9
    lea dx, mesIn
    int 21h
 mesInsert endp
 proc mesPgUp 
    mov ah, 9
    lea dx, mesPU
    int 21h
 mesPgUp endp
 proc mesPgDn
    mov ah, 9
    lea dx, mesPD
    int 21h
 mesPgDn endp

 erorSymbol:
    mov ah, 9
    lea dx, eror
    int 21h
    jmp enterSymbol

code ends
end begin

Решение задачи: «Вывод названия функциональных клавиш, которые нажаты»

textual
Листинг программы
;......
cont0:
    cmp   ah, 51h
    jne   cont1
    lea   dx,mesPgDn
    call  Print
    jmp   enterSymbol
 
;.......
proc Message
    mov ah,9
    int 21h
    ret
Message endp

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

Код выполняет проверку, является ли нажатая клавиша '51h' (функциональная клавиша F5). Если это так, то выводится сообщение mesPgDn (подразумевается, что это строка, помеченная как mesPgDn в ресурсах программы). Затем происходит переход к следующей функциональной клавише. Если это не '51h', то происходит переход к процедуре обработки сообщения. В этой процедуре происходит вывод сообщения, после чего возвращается управление в основную программу.

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

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