summaryrefslogtreecommitdiffstats
path: root/lab1/lab1-upg3.in
diff options
context:
space:
mode:
Diffstat (limited to 'lab1/lab1-upg3.in')
-rw-r--r--lab1/lab1-upg3.in62
1 files changed, 62 insertions, 0 deletions
diff --git a/lab1/lab1-upg3.in b/lab1/lab1-upg3.in
new file mode 100644
index 0000000..1f0a437
--- /dev/null
+++ b/lab1/lab1-upg3.in
@@ -0,0 +1,62 @@
+label1:
+; lista_sorterad = 1
+load 0 1
+0001
+store 0 0 d0
+
+; addr = e0
+load 0 1
+00e0
+store 0 0 d1
+
+label2:
+; tmp1 = pm(addr)
+load 0 2 d1
+store 0 0 d3
+
+; tmp2 = pm(addr + 1)
+load 0 0 d1
+add 0 1
+0001
+store 0 0 d2
+load 0 2 d2
+store 0 0 d4
+
+; tmp1 > tmp2?
+load 0 0 d3
+cmp 0 0 d4
+beq no_swap
+bge swap
+bra no_swap
+
+swap:
+load 0 2 d1
+load 1 2 d2
+store 0 2 d2
+store 1 2 d1
+
+; lista_sorterad = 0
+load 0 1
+0000
+store 0 0 d0
+
+no_swap:
+; räkna upp addr
+load 0 0 d1
+add 0 1
+0001
+store 0 0 d1
+
+; addr = 0xff?
+load 0 0 d1
+cmp 0 1
+00ff
+bne label2
+
+; lista_sorterad = 1?
+load 0 0 d0
+cmp 0 1
+0001
+bne label1
+
+halt