Выведение строк 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д