.data
Array1 sdword 2, 4, -3, -9, 7, 1, 8
Array2 sdword 2, -3, 6, 0, 7, 8, 5
prompt byte "matches", 0
.code
main proc
xor esi, esi
mov ecx, lengthof Array1
xor eax, eax
L1:
mov ebx, Array1[esi]
mov edx, Array2[esi]
cmp ebx, edx
jnz L2
inc eax
L2:
add esi, type Array1
loop L1
call writeint
lea edx, prompt
call writestring
call crlf
call waitmsg
main endp
```assembly=
INCLUDE Irvine32.inc
main EQU start@0
.data
Array1 sdword 2, 4, -3, -9, 7, 1, 8
Array2 sdword 2, -3, 6, 0, 7, 8, 5
prompt byte 10h, "matches", 0
.code
main proc
xor esi, esi
mov ecx, lengthof Array1
xor eax, eax
L1:
mov ebx, Array1[esi]
mov edx, Array2[esi]
cmp ebx, edx
jnz L2
inc eax
L2:
add esi, type Array1
loop L1
call writeint
lea edx, prompt
call writestring
call crlf
call waitmsg
main endp
END main
```

```assembly=
INCLUDE Irvine32.inc
main EQU start@0
.data
array1 sdword 2, 4, -3, -9, 7, 1, 8
array2 sdword 2, -3, 6, 0, 7, 8, 5
prompt byte 10h, "matches", 0
.code
compare proc uses ecx edi
L2:
mov ebx, esi
mov edx, edi
cmp ebx, edx
jnz L3
inc eax
L3:
add edi, type array2
loop L2
compare endp
main proc
xor eax, eax
mov ecx, lengthof array1
lea esi, array1
lea edi, array2
L1:
call compare
add esi, type array1
loop L1
call writeint
lea edx, prompt
call writestring
main endp
end main
```