Вывести на экран символы, которые содержатся в обеих строках - Assembler
Формулировка задачи:
Здравствуйте! Нужна помощь с программой. Пишу под DOS. Условие: С клавиатуры вводятся две строки, вывести на экран символы, которые содержатся в обеих строках. Вот мой код, работает неправильно, не совсем разобрался с регистром si, а точнее тем, как с ним взаимодействовать.
data segment string1 db 100,100 dup ('$') ; буфер ввода string2 db 100,100 dup ('$') ; буфер ввода string3 db 100,100 dup ('$') ; буфер вывода len1 dw ? len2 dw ? data ends code segment assume cs:code, ds:data START: mov ax, data mov ds, ax mov dl, 0ah mov ah, 2 int 21h lea dx, string1 mov ah, 0ah int 21h xor ah, ah lea bx, string1+2 xor cx, cx mov cl, string1+1 xor si, si mov len1, cx BB1: mov al, [bx] mov string1[si] , al inc si inc bx loop BB1 ; окончание ввода 1й строки mov dl, 0ah mov ah, 2 int 21h lea dx, string2 mov ah, 0ah int 21h xor ah, ah lea bx, string2+2 xor cx, cx mov cl, string2+1 xor si, si mov len2, cx BB2: mov al, [bx] mov string2[si] , al inc si inc bx loop BB2 ; окончание ввода 2й строки mov dl, 0ah mov ah, 2 int 21h xor bx, bx xor si, si xor di, di xor dx, dx compare: cmp si, len1 ; как только дойдем до конца первой строки, выход je OUT1 mov ah, string1[si] ; в ah - элемент из 1й строки cmp1: mov al, string2[di] ; в al - элемент из 2й строки cmp ah, al jne NO mov string3[si], al ; если совпали, заношу элемент в строку на вывод jmp NEXT_SI NO: cmp di, len2 jl NEXT_DI NEXT_SI: inc si xor di, di jmp compare NEXT_DI: inc di jmp cmp1 loop compare OUT1: mov string3[si], '$' xor si, si lea dx, string3 mov ah, 09h int 21h mov ah, 10h int 16h mov ax, 4C00h int 21h code ends end START
Решение задачи: «Вывести на экран символы, которые содержатся в обеих строках»
textual
Листинг программы
mov ax, ds mov es, ax
Объяснение кода листинга программы
- Создается переменная
ax
, которая будет содержать значение текущего сегмента данных (ds - data segment). - Значение переменной
ax
копируется в переменнуюes
, которая будет использоваться в качестве сегмента данных для записи данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д