eax で生成されたランダム値が、割り当てた配列内の値と同じかどうかをテストしようとしています。外側のループは配列を生成し、それを画面と配列に書き込みます。内側のループは、値が配列に存在するかどうかをテストすることになっています。内部ループを正しく実行していないことはわかっていますが、修正方法がわかりません。
うまく組み立てられますが、実行しようとすると、空白のコマンド ウィンドウ画面しか表示されません。また、Irvine32 ライブラリを使用しています。私のコードは以下の通りです:
編集:これまでのところ、皆さんの助けに感謝していますが、今は2つの問題があります. 1 つ目は、配列に対する一意性について 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
事前にご協力いただきありがとうございます。