Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _radixsort PROC
- ; void radixsort(int tab[], int n, int k);
- PUSH EBP
- MOV EBP, ESP
- PUSH EBX
- PUSH ESI
- MOV ESI, [EBP+12] ;n
- CMP EDX, 1
- JLE KONIEC
- MOV EDX, [EBP+12] ; EDX = j = n
- MOV EBX, [EBP+8] ; EBX = tab
- MOV ECX, 0 ; ECX = i = 0
- MOV EAX, [EBP+16] ; EAX = k
- BT [EBX+ECX*4], EAX
- JC WHILE_J
- WHILE_I:
- CMP ECX, ESI
- JGE BREAK
- ADD ECX, 1 ; i++
- BT [EBX+ECX*4], EAX
- JNC WHILE_I ; if (0)
- WHILE_J:
- CMP EDX, 0
- JLE BREAK
- CMP ECX, EDX ; if(i >= j)
- JGE BREAK
- SUB EDX, 1 ;j--
- BT [EBX+EDX*4], EAX
- JC WHILE_J
- PUSH DWORD PTR [EBX+ECX*4]
- PUSH DWORD PTR [EBX+EDX*4]
- POP DWORD PTR [EBX+ECX*4]
- POP DWORD PTR [EBX+EDX*4]
- JMP WHILE_I
- BREAK:
- CMP EAX, 0
- JLE KONIEC
- SUB EAX, 1 ; k--:
- PUSH EAX
- PUSH ESI
- PUSH ECX
- PUSH EBX
- PUSH EAX
- PUSH ECX
- PUSH EBX
- CALL _radixsort
- ADD ESP, 12
- POP EBX
- POP ECX
- POP ESI
- POP EAX
- PUSH EAX
- SUB ESI, ECX ; n-i
- PUSH ESI
- PUSH EBX
- CALL _radixsort
- ADD ESP, 12
- KONIEC:
- POP ESI
- POP EBX
- POP EBP
- RET
- _radixsort ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement