Я пытаюсь проверить, совпадает ли случайное значение, сгенерированное в eax, с любым значением в массиве, который я выделил. Внешний цикл генерирует массив и записывает его на экран и в массив. Предполагается, что внутренний цикл проверяет, существует ли значение в массиве. Я знаю, что неправильно делаю внутренний цикл, но не знаю, как это исправить.
Он прекрасно собирается, но когда я пытаюсь запустить, я получаю только пустой экран окна cmd. Также я использую библиотеки Irvine32. Мой код ниже:
РЕДАКТИРОВАТЬ : Я ценю, что ваши ребята помогают, но теперь у меня две проблемы. Во-первых, когда я пытаюсь оценить число в eax для уникальности моего массива, я на самом деле получаю ошибку нарушения доступа. Мой код для генерации массива и его тестирования ниже:
RandomArray PROC uses EAX
call Randomize
mov esi, OFFSET arr
mov edi, OFFSET arr
mov ebx, TYPE arr
mov ecx, 15
L1:
mov eax, [79 - 19]
push eax
call RandomRange
add eax, 19
search1:
mov edx,[esi]
cmp eax,edx ; compares the values in the array and the random int
je L1 ; jumps if the values are equal
add esi,4 ; moves to next byte to check again
loop search1 ; repeats loop
mov [esi],eax
pop eax
add esi, ebx
loop L1
ret
RandomArray ENDP
pop ecx
loop OUTER_LOOP
jmp FINISHED
SWAP:
mov bl, [esi]
mov dl, [esi+1]
xchg bl,dl
mov [esi],dl
mov [esi+1],bl
jmp CONTINUE
FINISHED:
ret
Заранее спасибо за помощь.