- .data
- numbers: .word 15,150,-20,1,7,9,3,6,-4,0,-10,15
- message: .asciiz "Sorted Array:\n"
- .text
- main:
- la $s7, numbers #s7 = Address of numbers[0]
- li $s0, 0 #init counter i
- li $s6, 11 #n - 1
- li $s1, 0 #init counter j
- li $t3, 0 #init counter for print
- li $t4, 12 #n
- li $v0, 4, #print message
- la $a0, message
- syscall
- loop:
- sll $t7, $s1, 2 #t7 = s1*2
- add $t7, $s7, $t7 #t7 = numbers[j]
- lw $t0, 0($t7) #load numbers[j]
- lw $t1, 4($t7) #load numbers[j+1]
- blt $t0, $t1, increment #if t0 < t1 -> increment. else swap
- sw $t1, 0($t7) #swap
- sw $t0, 4($t7)
- increment:
- addi $s1, $s1, 1 #increment j
- sub $s5, $s6, $s0 #s5 = s6 - s0
- bne $s1, $s5, loop #if s1 (counter for inner loop) != (n-1-sorted numbers), loop
- addi $s0, $s0, 1 #otherwise s0++
- li $s1, 0 #reset s1 to 0
- bne $s0, $s6, loop #check if sort was done
- print:
- beq $t3, $t4, exit #if t3 = t4, exit
- lw $t5, 0($s7) #load number
- li $v0, 1 #print number
- add $a0,$t5,$0
- syscall
- li $a0, 32 #print ' '
- li $v0, 11
- syscall
- addi $s7, $s7, 4 #increment numbers
- addi $t3, $t3, 1 #increment counter
- j print
- exit: