#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 О, большое тебе спасибо!