Facebook
From Khang, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 168
  1. .data
  2. numbers: .word 15,150,-20,1,7,9,3,6,-4,0,-10,15
  3. message: .asciiz "Sorted Array:\n"
  4.  
  5. .text
  6. main:
  7. la $s7, numbers   #s7 = Address of numbers[0]
  8. li $s0, 0    #init counter i
  9. li $s6, 11     #n - 1
  10. li $s1, 0     #init counter j
  11. li $t3, 0    #init counter for print
  12. li $t4, 12    #n
  13. li $v0, 4,    #print message
  14. la $a0, message
  15. syscall
  16.  
  17. loop:
  18. sll $t7, $s1, 2    #t7 = s1*2
  19. add $t7, $s7, $t7    #t7 = numbers[j]
  20. lw $t0, 0($t7)     #load numbers[j]
  21. lw $t1, 4($t7)     #load numbers[j+1]
  22. blt $t0, $t1, increment  #if t0 < t1 -> increment. else swap
  23. sw $t1, 0($t7)     #swap
  24. sw $t0, 4($t7)
  25.  
  26. increment:
  27. addi $s1, $s1, 1   #increment j
  28. sub $s5, $s6, $s0    #s5 = s6 - s0
  29. bne $s1, $s5, loop   #if s1 (counter for inner loop) != (n-1-sorted numbers), loop
  30. addi $s0, $s0, 1    #otherwise s0++
  31. li $s1, 0      #reset s1 to 0
  32. bne $s0, $s6, loop   #check if sort was done
  33.  
  34. print:
  35. beq $t3, $t4, exit   #if t3 = t4, exit
  36. lw $t5, 0($s7)    #load number
  37. li $v0, 1     #print number
  38. add $a0,$t5,$0
  39. syscall
  40. li $a0, 32     #print ' '
  41. li $v0, 11
  42. syscall
  43. addi $s7, $s7, 4   #increment numbers
  44. addi $t3, $t3, 1   #increment counter
  45. j print
  46.  
  47. exit: