Ввод двух строк и их вывод - Assembler

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

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

Есть задание - ввести две строки - выполнить с ними определённые действия, вывести. Ввести вроде как ввёл, пытаюсь проверить вывод, но не получается, первая строка не выводится, со второй всё норм (скрин прикрепил)
Листинг программы
  1. assume cs: code, ds:data
  2. data segment
  3. buffer db 254,0,254 dup ('$')
  4. str1 db 'enter string:', 0Dh, 0Ah, '$'
  5. str3 db 0Dh, 0Ah, '$'
  6. str2 db 'result:', 0Dh, 0Ah, '$'
  7. data ends
  8. data2 segment
  9. buffer2 db 254,0,254 dup ('$')
  10. str4 db 'enter string:', 0Dh, 0Ah, '$'
  11. str6 db 0Dh, 0Ah, '$'
  12. str5 db 'result:', 0Dh, 0Ah, '$'
  13. data2 ends
  14. code segment
  15. start:
  16. ;; Ввод первой строки
  17. mov ax, data
  18. mov ds, ax
  19. mov ah,09h
  20. mov dx, offset str1
  21. int 21h
  22. mov ah,0ah
  23. mov dx, offset buffer
  24. int 21h
  25. mov ah,09h
  26. mov dx, offset str3
  27. int 21h
  28. ;;;;;;; Ввод второй строки
  29. mov ax, data2
  30. mov ds, ax
  31. mov ah,09h
  32. mov dx, offset str4
  33. int 21h
  34. mov ah,0ah
  35. mov dx, offset buffer2
  36. int 21h
  37. mov ah,09h
  38. mov dx, offset str6
  39. int 21h
  40. ;;;; Вывод первой строки
  41. mov ah,09h
  42. mov dx, offset str2
  43. int 21h
  44. mov ah,09h
  45. lea dx, buffer+2
  46. int 21h
  47. ;;;; Вывод второй строки
  48. mov ah,09h
  49. mov dx, offset str5
  50. int 21h
  51. mov ah,09h
  52. lea dx, buffer2+2
  53. int 21h
  54. ;;;
  55. quit:
  56. mov ax, 4c00h
  57. int 21h
  58. code ends
  59. end start

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

textual
Листинг программы
  1. assume cs: code, ds:data
  2.  
  3. data segment
  4.     buffer db 254,0,254 dup ('$')
  5.     str1 db 'enter  string:', 0Dh, 0Ah, '$'
  6.     str3 db 0Dh, 0Ah, '$'
  7.     str2 db 'result:', 0Dh, 0Ah, '$'
  8. data ends
  9.  
  10. data2 segment
  11.     buffer2 db 254,0,254 dup ('$')
  12.     str4 db 'enter  string:', 0Dh, 0Ah, '$'
  13.     str6 db 0Dh, 0Ah, '$'
  14.     str5 db 'result:', 0Dh, 0Ah, '$'
  15. data2 ends
  16.  
  17. code segment
  18. start:
  19.     mov ax, data
  20.     mov ds, ax
  21.    
  22.     mov ah,09h
  23.     mov dx, offset str1
  24.     int 21h
  25.  
  26.     mov ah,0ah
  27.     mov dx, offset buffer  
  28.     int 21h
  29.  
  30.     mov ah,09h
  31.     mov dx, offset str3
  32.     int 21h
  33.  
  34.    ;;;;;
  35.    
  36.     mov ax, data2
  37.     mov ds, ax
  38.  
  39.     mov ah,09h
  40.     mov dx, offset str4
  41.     int 21h
  42.  
  43.     mov ah,0ah
  44.     mov dx, offset buffer2  
  45.     int 21h
  46.  
  47.     mov ah,09h
  48.     mov dx, offset str6
  49.     int 21h
  50.  
  51. ;;;;
  52.     mov ax,data
  53.     mov ds,ax
  54.  
  55.     mov ah,09h
  56.     mov dx, offset str2
  57.     int 21h
  58.  
  59.     mov ah,09h
  60.     lea dx, buffer+2
  61.     int 21h
  62.  
  63. ;;;;
  64.     mov ax, data2
  65.     mov ds, ax    
  66.  
  67.     mov ah,09h
  68.     mov dx, offset str5
  69.     int 21h
  70.  
  71.     mov ah,09h
  72.     lea dx, buffer2+2
  73.     int 21h
  74.     ;;;
  75. quit:
  76.     mov ax, 4c00h
  77.     int 21h
  78.     code ends
  79.     end start

Объяснение кода листинга программы

Список элементов:

  1. Ввод двух строк текста с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки).
  2. Первая строка вводится в буфер с помощью регистра dx, который содержит адрес буфера и функции int 21h, код 0Ah (перевод строки).
  3. Вторая строка вводится в буфер2 с помощью регистра dx, который содержит адрес буфера2 и функции int 21h, код 0Ah (перевод строки).
  4. Вывод строки enter string: с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки).
  5. Вывод первой строки ввода с помощью функции int 21h, код 09h (ввод символа) и регистра dx, который содержит адрес буфера.
  6. Вывод строки result: с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки).
  7. Вывод второй строки ввода с помощью функции int 21h, код 09h (ввод символа) и регистра dx, который содержит адрес буфера2.
  8. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  9. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  10. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  11. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  12. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  13. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  14. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  15. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  16. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  17. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  18. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  19. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.
  20. Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки $.

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


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

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

12   голосов , оценка 3.583 из 5

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

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

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