Implementing Sorting Algorithms in ARM Assembly

Sort an unsigned array using ARM assembly assignment help

.text .global _start .global main _start: main: LDR R0, =LIST // point to start of list LDR R1, [R0] // load first value, which is the list length n ADD R0, R0, #4 // point to first value in list SUB R1, R1, #1 // use n-1 MOV R2, #0 // start at index 0 for1: CMP R2, R1 // if i >= n-1, end sort BGE END MOV R3, R2 // min_index = i ADD R4, R2, #1 // start at j = i+1 for2: CMP R4, R1 // if j > n-1, end for2 BGT endfor2 LDR R5, [R0, R4, LSL #2] // load list[j] LDR R6, [R0, R3, LSL #2] // load list[min_index] CMP R5, R6 // if list[j] < list[min_index] BGE next MOV R3, R4 // min_index = j next: ADD R4, R4, #1 // j++ B for2 // repeat for2 endfor2: LDR R5, [R0, R2, LSL #2] // load list[i] LDR R6, [R0, R3, LSL #2] // load list[min_index] STR R6, [R0, R2, LSL #2] // save swapped in list[i] STR R5, [R0, R3, LSL #2] // save swapped in list[min_index] ADD R2, R2, #1 // i++ B for1 // repeat for1 END: B END .data LIST: .word 10 // list length .word 43 .word 31 .word 12 .word 7 .word 42 .word 15 .word 8 .word 1 .word 4 .word 5