Ввод двух строк и их вывод - 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
Объяснение кода листинга программы
Список элементов:
- Ввод двух строк текста с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки).
- Первая строка вводится в буфер с помощью регистра dx, который содержит адрес буфера и функции int 21h, код 0Ah (перевод строки).
- Вторая строка вводится в буфер2 с помощью регистра dx, который содержит адрес буфера2 и функции int 21h, код 0Ah (перевод строки).
- Вывод строки
enter string:
с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки). - Вывод первой строки ввода с помощью функции int 21h, код 09h (ввод символа) и регистра dx, который содержит адрес буфера.
- Вывод строки
result:
с помощью функции int 21h, код 09h (ввод символа) и 0Ah (перевод строки). - Вывод второй строки ввода с помощью функции int 21h, код 09h (ввод символа) и регистра dx, который содержит адрес буфера2.
- Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
. - Передача управления на функцию int 21h, код 09h (ввод символа) с регистром dx, который содержит адрес строки
$
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д