Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. _radixsort PROC
  2. ; void radixsort(int tab[], int n, int k);
  3.  
  4.         PUSH    EBP
  5.         MOV     EBP, ESP
  6.         PUSH    EBX
  7.         PUSH    ESI
  8.  
  9.         MOV     ESI, [EBP+12]   ;n
  10.         CMP     EDX, 1
  11.         JLE     KONIEC
  12.         MOV     EDX, [EBP+12]   ; EDX = j = n
  13.         MOV     EBX, [EBP+8]    ; EBX = tab
  14.         MOV     ECX, 0          ; ECX = i = 0
  15.         MOV     EAX, [EBP+16]   ; EAX = k
  16.  
  17.         BT      [EBX+ECX*4], EAX
  18.         JC      WHILE_J
  19.  
  20. WHILE_I:
  21.         CMP     ECX, ESI
  22.         JGE     BREAK
  23.         ADD     ECX, 1          ; i++
  24.         BT      [EBX+ECX*4], EAX
  25.         JNC     WHILE_I         ; if (0)
  26.  
  27. WHILE_J:
  28.         CMP     EDX, 0
  29.         JLE     BREAK
  30.         CMP     ECX, EDX        ; if(i >= j)
  31.         JGE     BREAK          
  32.         SUB     EDX, 1          ;j--
  33.         BT      [EBX+EDX*4], EAX           
  34.         JC      WHILE_J
  35.  
  36.         PUSH    DWORD PTR [EBX+ECX*4]
  37.         PUSH    DWORD PTR [EBX+EDX*4]
  38.         POP     DWORD PTR [EBX+ECX*4]
  39.         POP     DWORD PTR [EBX+EDX*4]
  40.         JMP     WHILE_I
  41. BREAK:
  42.         CMP     EAX, 0
  43.         JLE     KONIEC
  44.         SUB     EAX, 1          ; k--:
  45.  
  46.         PUSH    EAX
  47.         PUSH    ESI
  48.         PUSH    ECX
  49.         PUSH    EBX
  50.  
  51.         PUSH    EAX    
  52.         PUSH    ECX
  53.         PUSH    EBX
  54.         CALL    _radixsort
  55.         ADD     ESP, 12
  56.  
  57.         POP     EBX
  58.         POP     ECX
  59.         POP     ESI
  60.         POP     EAX
  61.  
  62.  
  63.         PUSH    EAX
  64.         SUB     ESI, ECX        ; n-i
  65.         PUSH    ESI
  66.         PUSH    EBX
  67.         CALL    _radixsort
  68.         ADD     ESP, 12
  69. KONIEC:
  70.         POP     ESI
  71.         POP     EBX
  72.         POP     EBP
  73.         RET
  74.  
  75. _radixsort ENDP
  76.    
  77.         END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement