Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .model flat
  2.     .code
  3.  
  4. comment @
  5.     radixsort(unsigned *array, size_t size, int bit);
  6.    
  7.     edx - tab
  8.     ecx - right_zero_index
  9.     esi - left_one_index
  10.     edi - bit
  11. @
  12.  
  13. _radixsort  proc
  14.     push        ebp
  15.     mov     ebp, esp
  16.     push        edi
  17.     push        esi
  18.  
  19.     mov     edx, [ebp+8]
  20.     mov     ecx, [ebp+12]
  21.     xor     esi, esi
  22.     mov     edi, [ebp+16]
  23.  
  24.     sub     ecx, 1
  25.     jl      fin
  26.  
  27. wloop:
  28. oloop:
  29.     cmp     esi, [ebp+12]
  30.     jge     zloop
  31.     bt      [edx+esi*4], edi
  32.     jc      zloop
  33.     add     esi, 1
  34.     jmp     oloop
  35.  
  36. zloop:
  37.     cmp     ecx, 0
  38.     jl      swap
  39.     bt      [edx+ecx*4], edi
  40.     jnc     swap
  41.     sub     ecx, 1
  42.     jmp     zloop
  43.  
  44. swap:
  45.     cmp     esi, ecx
  46.     jge     rec
  47.    
  48.     mov     eax, [edx+esi*4]
  49.     xchg        eax, [edx+ecx*4]
  50.     mov     [edx+esi*4], eax
  51.     jmp     wloop
  52.  
  53. rec:
  54.     sub     edi, 1
  55.     jl      fin
  56.    
  57.     push        edi
  58.     push        esi
  59.     push        edx
  60.     call        _radixsort
  61.     add     esp, 12
  62.  
  63.     add     edx, esi
  64.     mov     eax, [ebp+12]
  65.     sub     eax, esi
  66.  
  67.     push        edi
  68.     push        eax
  69.     push        edx
  70.     call        _radixsort
  71.     add     esp, 12
  72.  
  73. fin:
  74.     pop     esi
  75.     pop     edi
  76.     pop     ebp
  77.     ret
  78. _radixsort  endp
  79.  
  80.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement