SPO_JakaFurlan/ass1/insertion_sort.asm
2025-11-29 16:12:58 +01:00

66 lines
No EOL
1.1 KiB
NASM

.program prebere iz spomina seznam števil dolžine len
.in jih uredi z insertion sortom
.pustimo prvi element paddan, da lažje rečunamo premike
prog START 0
LDX #6
loop LDB #len
COMPR X, B .i < len
JEQ halt .zaključi
LDA arr, X .A = arr[i]
RMO X, S .S <- i
LDT #3 .T <- 3
SUBR T, X .X <- j= i - 1
loop2 LDT #3
COMPR X, T .j >= 1
JLT insert .ko je j = 0 skoči
J next .skoči na preverjanje naslednjega pogoja
.shranimo S nazaj v X in ga zmanjšamo za ena
.nato skočimo nazaj v loop
exit2 RMO S, X .X <- i
LDT #3
ADDR T, X .X <- i + 1
J loop
next LDB arr, X
COMPR B, A .arr[j] > arr[i]
JGT swap
J insert .če pogoj ni izpolnjen
.sicer zamenjamo elementa
swap LDT #3
ADDR T, X .X <- j + 1
STB arr, X. arr[j+1] = arr[j]
LDT #6
SUBR T, X .x <- x-1
J loop2
insert LDT #3
ADDR T, X .j = j+1
STA arr, X .arr[j+1] = arr[i]
SUBR T, X .j = j
J exit2
halt J halt
arr WORD 0
WORD 5
WORD 3
WORD 8
WORD 1
WORD 4
WORD 7
WORD 2
WORD 9
arrEnd WORD 6
len EQU arrEnd - arr + 3
END prog