Выведение строк 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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