Массив: При записи элементов массивов в регистры, значение регистра каждый раз меняется, хотя каждый элемент равен 1. - Assembler
Формулировка задачи:
Здравствуйте!
Задание:
Сравниваю два элемента разных массивов, для проверки сделал все элементы равными единице. При записи элементов массивов в регистры, значение регистра каждый раз меняется, хотя каждый элемент равен 1. Проверял чз отладчик. Не могу разобраться, что делаю не так (
Подскажите, пожалуйста.
Код:
title lab2
assume cs:cod,ss:s,ds:d
s segment stack
dw 128 dup(?)
s ends
d segment
A db 1,1,1,1,1,1,1,1,1,1
B db 1,1,1,1,1,1,1,1
X db 10 dup (0)
cnt db 0
lenA dw $-A
lenB dw $-B
d ends
cod segment
start: mov bx,d
mov ds,dx
mov bp,0
mov bx,0
xor si,0
mov cx,0
mov ax,0
mov dx,0
go: cmp cx,7
je p
mov si,cx
add cx,1
mov al,[B+si] ;запись элемента первого массива в регистр
xor ah,ah
mov si,bp
mov dl,[A+si] ;запись элемента второго массива в регистр
xor dh,dh
cmp al,dl ;сравнение двух элементов массива
je count
jmp go
count: add bl,1
xor bh,bh
jmp go
p: mov si,bp
mov [X+si],bl
xor ch,ch
mov bl,0
mov cx,0
cmp bp,9
je exit
add bp,1
jmp go
print:
mov cx,9
mov si,0
jmp put2
put2:
mov ah,02h
mov dl,X[si]
add dl,30h
int 21h
add si,1
loop put2
exit: call print
mov ax,4C00h
int 21h
cod ends
end start
Сформировать массив [Xi], элементы которого равны частоте
встречаемости элементов массива [Bi] среди элементов массива [Ai]
Определить, какой элемент массива [Bi] чаще всего встречается в [Ai].
Решение задачи: «Массив: При записи элементов массивов в регистры, значение регистра каждый раз меняется, хотя каждый элемент равен 1.»
textual
Листинг программы
for i:=0 to M-1 do begin X[i]:=0; for j:=0 to N-1 do if A[j]=B[i] then X[i]:=X[i]+1; end;
Объяснение кода листинга программы
- Задается два массива A и B, а также массив X.
- Цикл for i:=0 to M-1 выполняет N итераций для каждого элемента массива A.
- На каждой итерации значение X[i] устанавливается равным 0.
- Цикл for j:=0 to N-1 выполняет итерацию для каждого элемента массива B.
- Если A[j] равно B[i], то значение X[i] увеличивается на 1.
- По завершении всех итераций, значения массива X будут содержать количество совпадений каждого элемента массива A с элементами массива B.