Получение случайных символов при печати пользовательского ввода

#assembly #dos

Вопрос:

Я пытаюсь изучить сборку, и я хотел создать простую программу, в которой пользователь что-то вводит, а программа просто распечатывает то, что он только что ввел. Все работает нормально, пока я не распечатаю ввод, вместо ввода я получаю много символов мусора

 .model small
.stack 100h

.data
    info db "Enter a string $"
    buffer db 10, ?, 10 dup(" ")
.code

start:
    MOV dx, @data
    MOV ds, dx

    mov ah, 09h ;printing info
    lea dx, info
    int 21h

    mov ah, 0Ah ;reading input
    lea dx, buffer
    int 21h

    mov ah, 09h ;printing the input
    lea dx, buffer
    int 21h

    mov ah, 4ch
    mov al, 0
    int 21h

end start
 

Я делаю что-то не так с печатью ввода?

Комментарии:

1. Обратите внимание, что фактический ввод начинается с buffer 2 . Кроме того, функция печати ожидает $ терминатор, который не указан на входе. Простое решение состоит в том, чтобы заполнить буфер $ вместо пробелов (и добавить дополнительный, если вы получите 10 символов).

2. @Jester О, большое тебе спасибо!