Ввод двух строк и их вывод - 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, который содержит адрес строки
$.