Выведение строк TASM - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно ввести имя и фамилию и вывести "Hello, имя фамилия" Как показано на скриншоте у меня неправильно выводит данные, Hello заменяется на фамилию. Я предпологаю, что каретка указывает на начало строки в консоли. Как можно это исправить?
Листинг программы
  1. model small
  2. .data
  3. request_fname db "Enter your first name: $"
  4. request_lname db "Enter your last name: $"
  5. fname_string db 255,255,255 dup('$')
  6. lname_string db 255,255,255 dup('$')
  7. ;newline db 0Ah,0Dh,'$'
  8. space db ' ', '$'
  9. hello db "Hello, ", '$'
  10. .code
  11. main proc
  12. mov ax,@data
  13. mov ds,ax
  14. ;request fname
  15. mov ah,09h
  16. mov dx, offset request_fname
  17. int 21h
  18. ;fname input
  19. mov ah,0Ah
  20. mov dx, offset fname_string
  21. int 21h
  22. ;new line
  23. mov ah,02h
  24. mov dl, 0Ah
  25. int 21h
  26. ;reques lname
  27. mov ah,09h
  28. mov dx, offset request_lname
  29. int 21h
  30. ;lname input
  31. mov ah,0Ah
  32. mov dx,offset lname_string
  33. int 21h
  34. ;new line
  35. mov ah,02h
  36. mov dl, 0Ah
  37. int 21h
  38. ;output greeting
  39. mov ah,09h
  40. mov dx, offset hello
  41. int 21h
  42. ;newline
  43. ;output fname
  44. mov ah,09h
  45. mov dx, offset fname_string
  46. add dx,02h
  47. int 21h
  48. ;space
  49. mov ah,09h
  50. mov dx, offset space
  51. int 21h
  52. ;output lname
  53. mov ah,09h
  54. mov dx, offset lname_string
  55. add dx,02h
  56. int 21h
  57. ;exit
  58. mov ah,004ch
  59. int 21h
  60. main endp
  61. end main
  62. code ends

Решение задачи: «Выведение строк TASM»

textual
Листинг программы
  1. model small
  2. .data
  3. request_fname db 10,13,'Enter your first name: $'
  4. request_lname db 10,13,'Enter your last name: $'
  5. fname_string    db  255
  6. fname_len   db  ?
  7. fname_str   db  255 dup('$')
  8. lname_string    db  255
  9. lname_len   db  ?
  10. lname_str   db  255 dup('$')
  11.  
  12. ;newline db 0Ah,0Dh,'$'
  13. ;space db ' ', '$'
  14. hello db 10,13,'Hello, $'
  15. .code
  16. main proc
  17. mov ax,@data
  18. mov ds,ax
  19.  
  20. ;request fname
  21. mov ah,09h
  22. mov dx, offset request_fname
  23. int 21h
  24. ;fname input
  25. mov ah,0Ah
  26. mov dx, offset fname_string
  27. int 21h
  28.  
  29. ;new line
  30. ;mov ah,02h
  31. ;mov dl, 0Ah
  32. ;int 21h
  33.  
  34. ;reques lname
  35. mov ah,09h
  36. mov dx, offset request_lname
  37. int 21h
  38. ;lname input
  39. mov ah,0Ah
  40. mov dx,offset lname_string
  41. int 21h
  42. ;new line
  43. ;mov ah,02h
  44. ;mov dl, 0Ah
  45. ;int 21h
  46. ;output greeting
  47. mov ah,09h
  48. mov dx, offset hello
  49. int 21h
  50. ;newline
  51. ;output fname
  52. mov ah,09h
  53. mov dx, offset fname_str
  54. xor cx,cx
  55. mov bx,dx
  56. mov cl,fname_len
  57. add bx,cx
  58. mov byte ptr[bx],' '
  59. int 21h
  60. ;space
  61. ;mov ah,09h
  62. ;mov dx, offset space
  63. ;int 21h
  64. ;output lname
  65. mov ah,09h
  66. mov dx, offset lname_str
  67. int 21h
  68. ;exit
  69. mov ah,004ch
  70. int 21h
  71. main endp
  72. end main

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


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

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

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы