Sortowanie bąbelkowe (bubble sort) Poniżej przedstawiono program źródłowy odpowiedzialny za sortowanie bąbelkowe fragmentu tablicy zawartej w pamięci wewnętrznej RAM (adresy 20H÷26H). Po przejściu sortowania liczby będą uporządkowane rosnąco.
LJMP START
ORG 0100H
START:
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
MOV 31H, #06H
;umieszczenie w pamięci ilości przejść sortowania TU: MOV R7, 31H
;tu zaczyna się pierwsze przejście sortowania MOV R0, #20H
;do R0 ładuję wartość 20 (w praktyce R0 będzie teraz
;wskazywać na adres 20)
MOV R1, #21H
;do R1 ładuje wartość 21 (w praktyce R1 będzie teraz
;wskazywać na adres 21)
POCZ: MOV A, @R0
;do akumulatora A ładuję zawartość adresu 20
MOV B, @R1
;do akumulatora B ładuję zawartość adresu 21
;=============PORÓWNANIE====================
CJNE A, B, SPRAWDZ_C
;jeżeli A~=B to skocz do SPRAWDZ_C (gdy A<B to C
;ustawia się na 1)
SPRAWDZ_C: JC NIC
;gdy C=1 skocz do NIC
;--------warunek gdy A>B [SWAP]-------------
MOV 30H, @R0
;pod adres 30 ładuję zawartość adresu 20 (zwalniam
;miejsce)
MOV @R0, B
;zawartość adresu 21 ładuję do adresu 20
MOV @R1, 30H
;zawartość adresu 30 ładuję do adresu 21
;--------warunek gdy A<B -------------------
NIC:
INC R0
;zwiększam zawartość R0 (wskazuje następny adres) INC R1
;zwiększam zawartość R1 (wskazuje następny adres)
;===========================================
DJNZ R7, POCZ
;zmniejszam zawartość R7 i jeżeli nie jest ona równa 0
;to skacze do POCZ
DJNZ 31H, TU
;zmniejszanie zawartości adresu 31 (wykonanie powtórzeń)
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
NOP
NOP
NOP
JMP $
END START
bienieck