diff --git a/cv2.asm b/cv2.asm index 428c897..32ed10c 100644 --- a/cv2.asm +++ b/cv2.asm @@ -11,13 +11,53 @@ segment .text getSorted: enter 0,0 -fld tword [esi] -fstp dword [edi] + mov eax,[ebp+12] + shl eax,2 + push eax + CEXTERN malloc + call malloc + add esp,4 + + mov ecx,[ebp+12] + mov esi,[ebp+8] + mov edi,eax +.cpy: + fld tword [esi] + add esi,10 + fstp dword [edi] + add edi,4 + loop .cpy ;for(unsigned int i = 0; i < N ; i++) ; for(unsigned int j = i + 1; j < N; j++) ; if (newArr[i] > newArr[j]) SWAP newArr[i],newArr[j] + xor esi,esi ; esi = i = 0 +.for1: + cmp esi,[ebp+12] + jae .end_for1 + lea edi,[esi+1] ; edi = j = i + 1 +.for2: + cmp edi,[ebp+12] + jae .end_for2 + + fld dword [eax + esi*4] + fld dword [eax + edi*4] + fcomi + jbe .no_swap + fst dword [eax + esi*4] + fxch + fst dword [eax + edi*4] +.no_swap: + fcompp + inc edi + jmp .for2 +.end_for2: + + inc esi + jmp .for1 +.end_for1: + leave ret