1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
minimax:
;esi=tableau a lire
;edi=table de données pour bosser dessus
.max=0
.min=4
.Nmax=8
.Nmin=12
.maxlist=16
.minlist=20
xor ebx,ebx
mov [edi+.max],ebx
mov [edi+.min],ebx
mov [edi+.Nmax],ebx
mov [edi+.Nmin],ebx
lea ecx,[ebx+4]
.iteration:
mov eax,[esi+ecx]
cmp eax,[edi+.max]
jle @f
mov [edi+.max],eax
mov dword[edi+.Nmax],1
mov edx,edi
mov edx,[edi+.maxlist]
mov dword[edx],4
add edx,[edx]
mov [edx],ecx
jmp .endmax
@@:
jne @f
inc dword[edi+.Nmax]
mov edx,edi
add dword[edx],4
add edx,[edx]
mov [edx],ecx
@@:
.endmax:
jge @f
mov [edi+.min],eax
mov dword[edi+.Nmin],1
mov edx,edi
mov edx,[edi+.minlist]
mov dword[edx],4
add edx,[edx]
mov [edx],ecx
jmp .endmin
@@:
jne @f
inc dword[edi+.Nmin]
mov edx,edi
add dword[edx],4
add edx,[edx]
mov [edx],ecx
@@:
.endmin:
add ecx,4
cmp ecx,[esi]
jle .iterate
ret |
Partager