.MODEL SMALL
.STACK 100H
.DATA
MSG DB 'Нажмите клавишу (дважды Enter для выхода):', 0DH, 0AH, '$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; Выводим приглашение
MOV AH, 9
LEA DX, MSG
INT 21H
READ_KEY:
; Читаем символ с клавиатуры
MOV AH, 1
INT 21H
; Проверяем, является ли символ Enter (0DH)
CMP AL, 0DH
JE CHECK_SECOND_ENTER
; Выводим символ дважды
MOV AH, 2
MOV DL, AL
INT 21H
INT 21H
JMP READ_KEY
CHECK_SECOND_ENTER:
; Читаем следующий символ (ожидаем второй Enter)
MOV AH, 1
INT 21H
; Проверяем, является ли второй символ тоже Enter
CMP AL, 0DH
JE EXIT
; Если второй символ не Enter, выводим первый Enter дважды и продолжаем
MOV AH, 2
MOV DL, 0DH
INT 21H
INT 21H
; Выводим второй символ, если он был нажат
CMP AL, 0
JE READ_KEY
MOV DL, AL
INT 21H
INT 21H
JMP READ_KEY
EXIT:
; Завершаем программу
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
Ассемблер программу:
Задача: написать программу, которая будет отображать каждую нажатую клавишу на
экране дважды. Программа должна запускаться в режиме работы «Запустить в отдельном
окне». Программа завершает свою работу при вводе пустой строки, то есть по нажатии
клавиши «Ввод» - дважды