.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: