Вывод названия функциональных клавиш, которые нажаты - 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', то происходит переход к процедуре обработки сообщения. В этой процедуре происходит вывод сообщения, после чего возвращается управление в основную программу.