Выведение строк TASM - Assembler
Формулировка задачи:
Нужно ввести имя и фамилию и вывести "Hello, имя фамилия"
Как показано на скриншоте у меня неправильно выводит данные, Hello заменяется на фамилию. Я предпологаю, что каретка указывает на начало строки в консоли. Как можно это исправить?
Листинг программы
- model small
- .data
- request_fname db "Enter your first name: $"
- request_lname db "Enter your last name: $"
- fname_string db 255,255,255 dup('$')
- lname_string db 255,255,255 dup('$')
- ;newline db 0Ah,0Dh,'$'
- space db ' ', '$'
- hello db "Hello, ", '$'
- .code
- main proc
- mov ax,@data
- mov ds,ax
- ;request fname
- mov ah,09h
- mov dx, offset request_fname
- int 21h
- ;fname input
- mov ah,0Ah
- mov dx, offset fname_string
- int 21h
- ;new line
- mov ah,02h
- mov dl, 0Ah
- int 21h
- ;reques lname
- mov ah,09h
- mov dx, offset request_lname
- int 21h
- ;lname input
- mov ah,0Ah
- mov dx,offset lname_string
- int 21h
- ;new line
- mov ah,02h
- mov dl, 0Ah
- int 21h
- ;output greeting
- mov ah,09h
- mov dx, offset hello
- int 21h
- ;newline
- ;output fname
- mov ah,09h
- mov dx, offset fname_string
- add dx,02h
- int 21h
- ;space
- mov ah,09h
- mov dx, offset space
- int 21h
- ;output lname
- mov ah,09h
- mov dx, offset lname_string
- add dx,02h
- int 21h
- ;exit
- mov ah,004ch
- int 21h
- main endp
- end main
- code ends
Решение задачи: «Выведение строк TASM»
textual
Листинг программы
- model small
- .data
- request_fname db 10,13,'Enter your first name: $'
- request_lname db 10,13,'Enter your last name: $'
- fname_string db 255
- fname_len db ?
- fname_str db 255 dup('$')
- lname_string db 255
- lname_len db ?
- lname_str db 255 dup('$')
- ;newline db 0Ah,0Dh,'$'
- ;space db ' ', '$'
- hello db 10,13,'Hello, $'
- .code
- main proc
- mov ax,@data
- mov ds,ax
- ;request fname
- mov ah,09h
- mov dx, offset request_fname
- int 21h
- ;fname input
- mov ah,0Ah
- mov dx, offset fname_string
- int 21h
- ;new line
- ;mov ah,02h
- ;mov dl, 0Ah
- ;int 21h
- ;reques lname
- mov ah,09h
- mov dx, offset request_lname
- int 21h
- ;lname input
- mov ah,0Ah
- mov dx,offset lname_string
- int 21h
- ;new line
- ;mov ah,02h
- ;mov dl, 0Ah
- ;int 21h
- ;output greeting
- mov ah,09h
- mov dx, offset hello
- int 21h
- ;newline
- ;output fname
- mov ah,09h
- mov dx, offset fname_str
- xor cx,cx
- mov bx,dx
- mov cl,fname_len
- add bx,cx
- mov byte ptr[bx],' '
- int 21h
- ;space
- ;mov ah,09h
- ;mov dx, offset space
- ;int 21h
- ;output lname
- mov ah,09h
- mov dx, offset lname_str
- int 21h
- ;exit
- mov ah,004ch
- int 21h
- main endp
- end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д