Nhập chuỗi ký tự bằng assembly, code trên emu8086

.MODEL SMALL
.STACK 100h
.DATA
    tb db 'chuoi ket qua: $'        
    str db 256 dup(' ')
        db '$'
    crlf db 13, 10, '$'
    res db 256 dup(' ')
        db '$'
.CODE
MAIN PROC
    mov ax, @data
    mov ds, ax
    lea di, str
    cld
    nhap:
        mov ah, 1
        int 21h    ;luu vao al
        cmp al, '$'
        je hienthi 
        stosb   ; luu al vaostr   luu al vao di  
        jmp nhap
    hienthi:
        mov ah, 9
        lea dx, crlf
        int 21h
        mov ah, 9
        lea dx, crlf
        int 21h
        mov ah, 9
        lea dx, crlf
        int 21h
        mov ah, 9
        lea dx, crlf
        int 21h
        mov ah, 9
        lea dx, crlf
        int 21h
        
        
       
        mov ah, 9
        lea dx, tb
        int 21h
        
        mov ah, 9
        lea dx, str
        int 21h   
        mov ah, 4ch
        int 21h                           
MAIN ENDP
END MAIN

anh/chị cho em hỏi sao code assembly của em dùng để nhập 1 chuỗi ký tự cho đến ký tự ‘$’ thì dừng lại không chạy đúng kết quả vậy ạ.
em nhập xong thì không in ra được gì.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?