PIC Microcontroller Sorting Methods

See:

A simple bubble sort for 8 bit values:


; 4 element bubble sort routine
; by Andrew Warren <aiw at cypress.com> on 2001-04-13
; 2001-06-19:DAV: reworded comments.
  ; Macro ``Order'' puts the values in registers X and Y
  ; in order (X <= Y) by swapping their values (if necessary).
ORDER MACRO X,Y
 local endif ;if( Y < X)...
 MOVFW X SUBWF Y,W ; compare and set W := (Y-X). (modulo 0xff).
 BC endif ;...then swap them.
 ADDWF X,f ; Xnew := X + (Y-X) = Y;
 SUBWF Y,f ; Ynew := Y - (Y-X) = X;
 endif: ; now X <= Y.
 ENDM

; SUBROUTINE SORTSUB() SORTS REG1-REG4 IN ASCENDING ORDER.
SORTSUB:
 CALL SORT3 
 CALL SORT2 

SORT1:
 ORDER REG1,REG2
SORT2:
 ORDER REG2,REG3 
SORT3:
 ORDER REG3,REG4
 RETURN
; SORTSUB requires 21 words of code.
; by Andrew Warren 
The "order" macro sorts 2 numbers (8 bit values).