Консультация № 193478
21.08.2018, 15:54
0.00 руб.
21.08.2018, 16:20
1 1 1
Здравствуйте, уважаемые эксперты! Я написал программу, выводящую введенные символы в консоль (ассемблируя с помощью MASM 6.11). Пытаясь добавить в программу поддержку Enter, я наткнулся на проблему: если первый ввод Enter работает нормально, то после второго нажатия дальнейший ввод идет некорректно. На скриншоте изображено состояние консоли после ввода "qwert-Enter-asdfg-Enter-zxcvb".
Просьба помочь решить проблему. Спасибо.

Программа:
[code lang=asm h=200]CSEG segment
org 100h

start:

mov ax,3
int 10h

mov ax,0B800h
mov es,ax
mov di,0
mov cx,25

again:

push cx
mov cx,80

again2:

mov ah,10h
int 16h
mov ah,07h
cmp al,0Dh
jz enter_yes
mov es:[di],ax
add di,2
jmp not_enter

enter_yes:
add di,cx
add di,cx
mov cx,0

not_enter:

loop again2

pop cx

loop again

int 20h

CSEG ends
end start [/code]
Прикрепленные файлы:
af69f71750700b98d627ce76314e34a81a2ded40.png

Обсуждение

давно
Посетитель
7438
7205
21.08.2018, 16:46
общий
это ответ
Здравствуйте, Роман!
Сравните со следующим кодом...
Добавил выход по ESC
Не мешало бы добавить управление курсором
[code lang=asm h=200]CSEG segment
org 100h

start:
mov ax, 3
int 10h

mov ax, 0B800h
mov es, ax
mov di, 0
mov cx, 25

again:
push di
push cx

mov cx, 80

again2:
mov ah, 10h
int 16h

cmp al, 1bh
je exit

mov ah, 07h
cmp al, 0Dh
jz enter_yes

mov es:[di], ax
add di, 2
loop again2

enter_yes:
pop cx
pop di
add di, 80*2
loop again
exit:
int 20h

CSEG ends
end start
[/code]
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа