sort.asm:
;###################################################################################################
CBLOCK 0x20
r_SORT__1
r_SORT__2
r_SORT__3
r_SORT__4
r_SORT__5
r_SORT__6
r_SORT__7
r_SORT__8
r_SORT__9
r_SORT__IX_1
r_SORT__IX_2
r_SORT__TMP
ENDC
;---------------------------------------------------------------------------------------------------
;###################################################################################################
_SORT:
;---------------------------------------------------------------------------------------------------
MOVLW .9 ; --. 'n' dekadicky pocet prvku ke trideni
MOVWF r_SORT__IX_1 ; <-'
_SORT.Smycka_1:
; --- SMYCKA 1: (r_SORT__IX_1) = 'n' AZ 1 ---
MOVLW .1 ; --.
MOVWF r_SORT__IX_2 ; <-'
_SORT.Smycka_2:
; --- SMYCKA 2: (r_SORT__IX_2): 1 AZ (r_SORT__IX_1) ---
; --- (INDF[r_SORT__IX_2 -1]) - (INDF[r_SORT__IX_2 ]) ---
MOVFW r_SORT__IX_2 ;
ADDLW r_SORT__1 ;
MOVWF FSR ; FSR pointr: (r_SORT__IX_2)
MOVFW INDF ; (W) = (INDF[r_SORT__IX_2])
DECF FSR,f ; FSR pointr: (r_SORT__IX_2 -1)
SUBWF INDF,w ; (W) = (INDF[r_SORT__IX_2 -1]) - (W)
; --- SMER TRIDENI SE VOLI ODKOMENTOVANIM BTFSC... NEBO BTFSS... ---
BTFSC STATUS,C ; ?? PROHODIT PRO VZESTUPNE ??
; BTFSS STATUS,C ; ?? PROHODIT PRO SESTUPNE ??
CALL _SORT.Prohozeni ; 'ANO'
INCF r_SORT__IX_2,f ; (r_SORT__IX_2) +1
; --- (r_SORT__IX_1) >= (r_SORT__IX_2) ---
INCF r_SORT__IX_2,w ; (W) = (r_SORT__IX_2) +1
SUBWF r_SORT__IX_1,w ; (W) = (r_SORT__IX_1) - (r_SORT__IX_2)
; --- ZAKONCENI SMYCKY 2 ---
BTFSC STATUS,C ; ?? (r_SORT__IX_1) >= (r_SORT__IX_2) ??
GOTO _SORT.Smycka_2 ; 'ANO'
; --- ZAKONCENI SMYCKY 1 ---
DECFSZ r_SORT__IX_1,f ; ?? DOSAZENA '0' ??
GOTO _SORT.Smycka_1 ; 'NE'
RETURN
_SORT.Prohozeni:
; --- (INDF[r_SORT__IX_2 -1]) <-PROHOZENI-> (INDF[r_SORT__IX_2 ]) ---
MOVFW INDF ; --.
MOVWF r_SORT__TMP ; <-' (r_SORT__TMP) = (INDF[r_SORT__IX_2 -1])
INCF FSR,f ; FSR pointr: (r_SORT__IX_2)
MOVFW INDF ; ->(W)
DECF FSR,f ; FSR pointr: (r_SORT__IX_2 -1)
MOVWF INDF ; <-(W)
INCF FSR,f ; FSR pointr: r_SORT__IX_2
MOVFW r_SORT__TMP ; --.
MOVWF INDF ; <-' (INDF[r_SORT__IX_2]) = (r_SORT__TMP)
RETURN
;###################################################################################################