Add a simple insertion sort test example (from RO!)
This commit is contained in:
parent
acb49552ed
commit
6abc4f6d79
1 changed files with 73 additions and 0 deletions
73
examples/insertion_sort.mimasm
Normal file
73
examples/insertion_sort.mimasm
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
.reg ACC 0
|
||||||
|
.reg IAR init
|
||||||
|
.lit 9
|
||||||
|
.lit 8
|
||||||
|
.lit 7
|
||||||
|
.lit 6
|
||||||
|
.lit 5
|
||||||
|
.lit 4
|
||||||
|
.lit 3
|
||||||
|
.lit 2
|
||||||
|
.lit 1
|
||||||
|
|
||||||
|
.org 0x00040
|
||||||
|
.lit 8
|
||||||
|
|
||||||
|
.org 0x00080 ;; tempVars
|
||||||
|
i: .lit 0
|
||||||
|
k: .lit 0
|
||||||
|
maxIndex: .lit 0
|
||||||
|
max: .lit 0
|
||||||
|
negOne: .lit -1
|
||||||
|
one: .lit 1
|
||||||
|
temp: .lit 0
|
||||||
|
|
||||||
|
.org 0x00100 ;start
|
||||||
|
init:
|
||||||
|
LDV 0x40
|
||||||
|
STV i
|
||||||
|
iHead:
|
||||||
|
LDV i
|
||||||
|
JMN end
|
||||||
|
iBody:
|
||||||
|
LDV i ;
|
||||||
|
STV maxIndex ; max index is current one
|
||||||
|
LDIV maxIndex ; A[i]
|
||||||
|
STV max ; write in max
|
||||||
|
LDV i
|
||||||
|
STV k ; init k
|
||||||
|
kHead:
|
||||||
|
LDV k
|
||||||
|
JMN afterLoop
|
||||||
|
kBody:
|
||||||
|
LDV max
|
||||||
|
NOT ; ones coplement
|
||||||
|
ADD one ; twos complement
|
||||||
|
STV temp ; -max in temp
|
||||||
|
LDIV k ; A[k]
|
||||||
|
ADD temp ; A[k] - max
|
||||||
|
JMN kAfter ; >=0 ==> A[k] > max
|
||||||
|
LDV k
|
||||||
|
STV maxIndex
|
||||||
|
LDIV maxIndex
|
||||||
|
STV max
|
||||||
|
kAfter: ; k--
|
||||||
|
LDV k
|
||||||
|
ADD negOne
|
||||||
|
STV k
|
||||||
|
JMP kHead ; next loop
|
||||||
|
afterLoop:
|
||||||
|
; swap
|
||||||
|
LDIV i
|
||||||
|
STV temp ; A[i] -> temp
|
||||||
|
LDV max
|
||||||
|
STIV i ; A[i] = max
|
||||||
|
LDV temp
|
||||||
|
STIV maxIndex ; A[maxIndex] = temp
|
||||||
|
iAfter: ; i--
|
||||||
|
LDV i
|
||||||
|
ADD negOne
|
||||||
|
STV i
|
||||||
|
JMP iHead ; next loop
|
||||||
|
end:
|
||||||
|
HALT
|
||||||
Loading…
Add table
Add a link
Reference in a new issue