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