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