我正在尝试测试 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
提前感谢您的帮助。