Ошибка в программе - вывести введенное имя пользователя - Assembler

Узнай цену своей работы

Формулировка задачи:

В программе ошибка. Я не могу ее найти. Пользователь должен ввести свое имя. Потом нужно очистить экран и в левом верхнем углу вывести это имя. Но оно не выводится! Помогите найти ошибку.
stacksg segment para stack 'stack'
    DW      32 dup ('*')
stacksg ends
 
datasg  segment para 'data'
    namepar     label   BYTE
    maxLen      DB      20
    nameLen     DB      0
    userName    DB      20 dup(' '), '$'
    
    prompt      DB      "Enter your name ", '$'
datasg  ends
 
codesg  segment para 'code'
    begin    proc    far
        assume  cs:codesg, ds:datasg, ss:stacksg, es:datasg
        push    ds
        sub     ax, ax
        push    ax
        mov     ax, datasg
        mov     ds, ax
        mov     es, ax
        
        call    ClearScreen     ; Очистить экран
        call    ShowPrompt      ; Выдать текст запроса
        call    InputName       ; Ввести имя
        call    ClearScreen     ; Очистить экран
        call    SetCursor       ; Установить курсор
        call    ShowName        ; Вывести имя
        ret
    begin    endp
    
    ; Выдать текст запроса
    ShowPrompt   proc    near
        mov     ah, 09
        lea     dx, prompt
        int     21h
        ret
    ShowPrompt   endp
    
    ; Ввести имя
    InputName    proc    near
        mov     ah, 0Ah
        lea     dx, namepar
        int     21h
        ret
    InputName    endp
    
    ; Вывести имя
    ShowName     proc    near
        mov     ah, 09
        lea     dx, userName
        int     21h
        ret
    ShowName     endp
    
    ; Очистка экрана
    ClearScreen proc    near
        mov     ax, 0600h
        mov     bh, 30
        mov     cx, 0000
        mov     dx, 184Fh   ; 24,79
        int     10h
        ret
    ClearScreen endp
    
    ; Установка курсора
    SetCursor   proc    near
        mov     ah, 02
        mov     bh, 00
        mov     dx, 0000
        int     10h
        ret
    SetCursor   endp
codesg  ends
    end begin

Решение задачи: «Ошибка в программе - вывести введенное имя пользователя»

textual
Листинг программы
    ; Ввести имя
    InputName   proc    near
        mov     ah, 0Ah
        lea     dx, namepar
        int     21h
        
        ; Заменить оставшийся Return на '$'
        mov     bh, 00
        mov     bl, nameLen
        mov     userName[bx], '$'
        ret
    InputName   endp

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы