Prueba si el valor en EAX es el mismo que cualquier valor en una matriz x86

Estoy intentando probar si el valor aleatorio generado en eax es el mismo que cualquier valor en una matriz que he asignado. El bucle externo genera la matriz y la escribe en la pantalla y en la matriz. Se supone que el bucle interno prueba si el valor existe en la matriz. Sé que no estoy haciendo el bucle interno correctamente, pero no estoy seguro de cómo solucionarlo.

Se ensambla muy bien, pero cuando intento ejecutarlo solo aparece una pantalla de ventana cmd en blanco. También estoy usando las bibliotecas Irvine32. Mi código está abajo:

EDITA: Aprecio su ayuda hasta ahora, pero ahora tengo dos problemas. La primera es que cuando trato de evaluar el número en eax para la unicidad en mi matriz, en realidad obtengo un error de infracción de acceso. Mi código para generar la matriz y probarlo está a continuación:

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

Gracias por su ayuda por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta