Это особенности работы функции 0Ah прерывания 21h MS-DOS. Для своей работы она требует буфер определённой структуры.
1-й байт: размер буфера для ввода строки с клавиатуры + 1. +1 - потому что эта функция всегда вставляет в конце введённой строки маркер с кодом 0Dh.
2-й байт: реальная длина введённой строки без учёта маркера 0Dh.
Начиная с 3-го байта сам буфер для ввода.
Два карточных символа у вас получаются потому что вы передаёте функции вывода строки на экран (09h прерывания DOS 21h) не адрес начала строки, а адрес начала буфера ввода, два первых байта которого это длина буфера и длина введённой строки.
Нужно передавать адрес на 2 байта больше:
mov dx, OFFSET bufer + 2
или (не зря же у вас поля буфера разделены и имеют собственные метки) :
mov dx, OFFSET string
Доллары нужны для функции 9, так как она выводит на экран подряд все символы, пока не встретится символ с кодом 24h, то есть "доллар". Сам доллар на экран не выводится.
А так как заранее неизвестно, сколько символов введёт пользователь, то для упрощения последующего вывода на экран, буфер ввода предварительно заполнен долларами.
Но у вас долларов не хватает. Для ввода строки из 4-х символов нужен буфер длиной 5 байт (4 символа + маркер 0Dh). В этом случае все 5 долларов будут стёрты и для функции вывода не останется маркера окончания, и она будет выводить на экран весь хранящийся в памяти мусор, пока где-то не попадётся байт 24h. Поэтому строка string должна быть длиной 6 байт:
string db '$$$$$$'
Дополнительно с примером смотрите
здесь.
TITLE helcom4.asm
.model medium
.data
message1 DB "Vvedit slovo!", 0dh, 0ah, "$"
message2 db "Vuvid na ekran", 0dh, 0ah, "$"
bufer db 5
len db 0
string db "$$$$$"
.code
start:
mov ax, @data
mov ds, ax
mov es, ax
mov ah, 9 ; vuvestu na ekran
mov dx, OFFSET message1 ; textove povidomlenna
int 21h
mov ah,0Ah
mov dx, OFFSET bufer
int 21h ; считать строку символов в буфер
mov ah, 9h ; vuvestu na ekran
mov dx, OFFSET message2 ; textove povidomlenna
int 21h
mov ah, 9h
mov dx, OFFSET bufer
int 21h
mov ax, 4C00h ; zavershutu
int 21h ; programy
.stack
stk db 256 dup ("stack")
end start ; vkazue na tochky vhody