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