Ошибка в программе - вывести введенное имя пользователя - 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