ZiLOG Z80-CPU Technical Manual page 73

Table of Contents

Advertisement

01/22/76
11: 14:37
BUBBLE LISTING
PAGE 1
LOC
OBJCODE
STMT
SOURCE STATEMENT
1
***
STANDARD EXCHANGE (BUBBLE) SORT ROUTINE
***
2
3
AT ENTRY: HL CONTAINS ADDRESS OF DATA
4
C CONTAINS NUMBER OF ELEMENTS TO BE SORTED
5
(l<C<256)
6
7
AT EXIT: DATA SORTED IN ASCENDING ORDER
8
9
USE OF REGISTERS
10
11
REGISTER
CONTENTS
12
13
A
TEMPORARY STORAGE FOR CALCULATIONS
14
B
COUNTER FOR DATA ARRAY
15
C
LENGTH OF DATA ARRAY
16
D
FIRST ELEMENT IN COMPARISON
17
E
SECOND ELEMENT IN COMPARISON
18
H
FLAG TO INDICATE EXCHANGE
19
L
UNUSED
20
IX
POINTER INTO DATA ARRAY
21
IY
UNUSED
22
0000
222600
23
SORT:
LD
(DATA), HL
; SAVE DATA ADDRESS
0003
CB84
24
LOOP:
RES
FLAG,H
; INITIALIZE EXCHANGE FLAG
0005
41
25
LD
B,C
; INITIALIZE LENGTH COUNTER
0006
05
26
DEC
B
; ADJUST FOR TESTING
0007
DD2A2600
27
LD
IX, (DATA)
; INITIALIZE ARRAY POINTER
OOOB
DD7EOO
28
NEXT:
LD
A, (IX)
; FIRST ELEMENT IN COMPARISON
OOOE
57
29
LD
D,A
; TEMPORARY STORAGE FOR ELEMENT
OOOF
DD5E01
30
LD
E, (IX+l)
; SECOND ELEMENT IN COMPARISON
0012
93
31
SUB
E
; COMPARISON FIRST TO SECOND
0013
3008
32
JR
NC, NOEX-$
; IF FIRST> SECOND, NO JUMP
0015
DD7300
33
LD
(IX), E
; EXCHANGE ARRAY ELEMENTS
0018
DD7201
34
LD
(IX+1), D
001B
CBC4
35
SET
FLAG,H
; RECORD EXCHANGE OCCURRED
OOlD
DD23
36
NOEX:
INC
IX
; POINT TO NEXT DATA ELEMENT
001F
lOEA
37
DJNZ
NEXT-$
; COUNT NUMBER OF COMPARISONS
38
; REPEAT IF MORE DATA PAIRS
0021
CB44
39
BIT
FLAG,H
; DETERMINE IF EXCHANGE OCCURRED
0023
20DE
40
JR
NZ,LOOP-$
; CONTINUE IF DATA UNSORTED
0025
C9
41
RET
; OTHERWISE, EXIT
42
0026
43
FLAG:
EQU
0
; DESIGNATION OF FLAG BIT
0026
44
DATA:
DEFS
2
; STORAGE FOR DATA ADDRESS
45
END
67

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the Z80-CPU and is the answer not in the manual?

Questions and answers

This manual is also suitable for:

Z80a-cpu

Table of Contents