-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbubble_sort.asm
105 lines (94 loc) · 1.31 KB
/
bubble_sort.asm
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
;bubble sort
;this is the array
ldc 23 ;23
stl 0
ldc 87 ;87
stl 1
ldc 32 ;32
stl 2
ldc 1 ;1
stl 3
ldc 5 ;5
stl 4
ldc 4 ;4
stl 5
ldc 3 ;3
stl 6
ldc 2 ;2
stl 7
ldc 133 ;133
stl 8
ldc 67 ;67
stl 9
ldc 10
ldc 0
stnl 100
outer_loop:
ldc 0
ldnl 100
adc -1
ldc 0
stnl 100 ;temp1
ldc 0 ;exit condition
ldnl 100
brz exit ; when memory[0+100]==0 IT WILL EXIT
ldc 0
ldc -1 ; initializing inner loop
br inner ; inner loop will be called
inner:
adc 2
ldc 0
add
adc -1
a2sp
ldc 0
ldnl 100
sp2a
adc 1
sub
brlz outer_loop
sp2a
adc 1
ldc 0
add
adc -1
ldc 200 ;temp2
stnl 0
sp2a
adc 1
ldc 0
add
adc -1
ldnl 0
a2sp
ldnl 0
sp2a
sub
brlz swap
ldc 0
ldnl 200
adc 1
ldc 0
add
adc -1
br inner
swap:
sub
ldc 0
ldnl 200
ldnl 1
a2sp
ldc 0
ldnl 200
stnl 1
sp2a
sp2a
ldc 0
ldnl 200 ;temp2
stnl 0
adc 1
ldc 0
add
adc -1
br inner
exit: HALT