Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача по ассемблеру SAMS

OneSorT Ученик (249), на голосовании 4 недели назад
Задача: написать программу, которая будет отображать каждую нажатую клавишу на
экране дважды. Программа должна запускаться в режиме работы «Запустить в отдельном окне». Программа завершает свою работу при вводе пустой строки, то есть по нажатии клавиши «Ввод» - дважды
Голосование за лучший ответ
Пудинг Сладок Гуру (4150) 1 месяц назад
ты где учишься? это для ААС?
OneSorTУченик (249) 1 месяц назад
даа, архитектура
КТК
Пудинг Сладок Гуру (4150) 1s0rt ,'), ооо, какая группа? я тоже с ктк)
OneSorTУченик (249) 1 месяц назад
)
Cogni Просветленный (44782) 1 месяц назад
 ; Программа: Отображение каждой нажатой клавиши дважды 
; Завершение при вводе пустой строки (двойной Enter)
; Ассемблер: MASM/TASM

.MODEL SMALL
.STACK 100h

.DATA
; Переменная для отслеживания предыдущего нажатия Enter
prevEnter DB 0

.CODE
MAIN PROC
; Инициализация сегментов
MOV AX, @DATA
MOV DS, AX

MAIN_LOOP:
; Чтение символа с клавиатуры без эха (функция 07h)
MOV AH, 07h
INT 21h
; Полученный символ в AL

; Проверка, является ли символ Enter (ASCII 13)
CMP AL, 0Dh
JNE NOT_ENTER
; Если Enter, проверяем предыдущий ввод
CMP prevEnter, 1
JE EXIT_PROGRAM
; Устанавливаем флаг, что Enter был нажат
MOV prevEnter, 1
; Отображаем Enter (новая строка)
MOV DL, 0Dh
MOV AH, 02h
INT 21h
MOV DL, 0Ah
MOV AH, 02h
INT 21h
JMP MAIN_LOOP

NOT_ENTER:
; Если не Enter, сбрасываем флаг prevEnter
MOV prevEnter, 0
; Отображаем символ дважды
MOV DL, AL
MOV AH, 02h
INT 21h
MOV DL, AL
MOV AH, 02h
INT 21h
JMP MAIN_LOOP

EXIT_PROGRAM:
; Выход из программы
MOV AH, 4Ch
INT 21h

MAIN ENDP
END MAIN
Похожие вопросы