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

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

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

Есть задание - ввести две строки - выполнить с ними определённые действия, вывести. Ввести вроде как ввёл, пытаюсь проверить вывод, но не получается, первая строка не выводится, со второй всё норм (скрин прикрепил)
assume cs: code, ds:data
 
data segment
    buffer db 254,0,254 dup ('$')
    str1 db 'enter  string:', 0Dh, 0Ah, '$'
    str3 db 0Dh, 0Ah, '$'
    str2 db 'result:', 0Dh, 0Ah, '$'
data ends
 
data2 segment
    buffer2 db 254,0,254 dup ('$')
    str4 db 'enter  string:', 0Dh, 0Ah, '$'
    str6 db 0Dh, 0Ah, '$'
    str5 db 'result:', 0Dh, 0Ah, '$'
data2 ends
 
code segment
start:
;; Ввод первой строки
    mov ax, data
    mov ds, ax
    
    mov ah,09h
    mov dx, offset str1 
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer  
    int 21h
 
    mov ah,09h
    mov dx, offset str3
    int 21h
 
   ;;;;;;; Ввод второй строки 
    
    mov ax, data2
    mov ds, ax
 
    mov ah,09h
    mov dx, offset str4
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer2  
    int 21h
 
    mov ah,09h
    mov dx, offset str6
    int 21h
 
;;;; Вывод первой строки
 
    mov ah,09h
    mov dx, offset str2
    int 21h
 
    mov ah,09h
    lea dx, buffer+2
    int 21h
 
;;;; Вывод второй строки
 
    mov ah,09h
    mov dx, offset str5
    int 21h
 
    mov ah,09h
    lea dx, buffer2+2
    int 21h
    ;;;
quit:
    mov ax, 4c00h
    int 21h
    code ends
    end start

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

textual
Листинг программы
assume cs: code, ds:data
 
data segment
    buffer db 254,0,254 dup ('$')
    str1 db 'enter  string:', 0Dh, 0Ah, '$'
    str3 db 0Dh, 0Ah, '$'
    str2 db 'result:', 0Dh, 0Ah, '$'
data ends
 
data2 segment
    buffer2 db 254,0,254 dup ('$')
    str4 db 'enter  string:', 0Dh, 0Ah, '$'
    str6 db 0Dh, 0Ah, '$'
    str5 db 'result:', 0Dh, 0Ah, '$'
data2 ends
 
code segment
start:
    mov ax, data
    mov ds, ax
    
    mov ah,09h
    mov dx, offset str1 
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer  
    int 21h
 
    mov ah,09h
    mov dx, offset str3
    int 21h
 
   ;;;;;
    
    mov ax, data2
    mov ds, ax
 
    mov ah,09h
    mov dx, offset str4
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer2  
    int 21h
 
    mov ah,09h
    mov dx, offset str6
    int 21h
 
;;;;
    mov ax,data
    mov ds,ax
 
    mov ah,09h
    mov dx, offset str2
    int 21h
 
    mov ah,09h
    lea dx, buffer+2
    int 21h
 
;;;; 
    mov ax, data2
    mov ds, ax    
 
    mov ah,09h
    mov dx, offset str5
    int 21h
 
    mov ah,09h
    lea dx, buffer2+2
    int 21h
    ;;;
quit:
    mov ax, 4c00h
    int 21h
    code ends
    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