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