-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsort2.mac
54 lines (45 loc) · 1.01 KB
/
sort2.mac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.z80
bdos equ 5
lf equ 0Ah
flag equ 0
print equ 9
reset equ 0
aseg
start: org 100H
ld hl,liczby ; adres tabl
ld c,(hl)
inc hl
push hl
push de
push bc
push ix
push af
sort: ld (data), hl ; zapisanie adresu danych
loop2: res flag, h ; ustawienie flagi
ld b, c ; licznik liczb
dec b ; dostosowanie b (czyli o -1)
ld ix, (data) ; wskażnik na dane
next: ld a, (ix) ; pierwszy element
ld d, a ; zapamiętanie tymczasowe
ld e, (ix+1) ; drugi element
sub e ; sprawdzenie
jr c, noex ; pierwszy < drugi , nie skacz (czyli zamien)
ld (ix), e ; zamiana elementow
ld (ix+1), d
set flag, h ; zapisanie że zmieniono
noex: inc ix ; następny element
djnz next ; sprawdzenie czy wszystkie
; powtórka jesli jeszcze są
bit flag, h ; czy zmiana była?
jr nz, loop2 ; powtórka jeśli jeszcze nie posortowane
ld c,print
ld de,tekst
call bdos
ld c,reset
jp bdos
ret
;
data: ds 2 ; storage for data address
liczby: db 4,1,5,3,2
tekst: db lf,'koniec $'
end