Advertisement
Guest User

Untitled

a guest
May 26th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. .data
  2. size_prompt: .asciiz "Number of integers: "
  3. value_prompt: .asciiz "Enter a value: "
  4. sorted_arr: .asciiz "The sorted array is: "
  5. separator: .asciiz ", "
  6. nl: .asciiz "\n"
  7.  
  8. .globl main
  9. .text
  10. main:
  11. la $a0, size_prompt
  12. li $v0, 4
  13. syscall
  14.  
  15. li $v0, 5
  16. syscall
  17. move $s0, $v0
  18.  
  19. sll $a0, $v0, 2
  20. li $v0, 9
  21. syscall
  22. move $s1, $v0
  23.  
  24. ori $s2, $zero, 0x0
  25. ori $s3, $zero, 0x0
  26.  
  27. #s0 - size of the array
  28. #s1 - array's address
  29. #s2 - offset
  30. #s3 - counter
  31. jal read_array
  32. ori $s2, $zero, 0x0
  33. ori $s3, $zero, 0x0
  34. jal bubble_sort
  35. la $a0, sorted_arr
  36. li $v0, 4
  37. syscall
  38. ori $s2, $zero, 0x0
  39. ori $s3, $zero, 0x0
  40. jal print_array
  41. j exit
  42.  
  43. read_array:
  44. la $a0, value_prompt
  45. li $v0, 4
  46. syscall
  47.  
  48. li $v0, 5
  49. syscall
  50. move $t0, $v0
  51. add $t1, $s1, $s2
  52. sw $t0, 0($t1)
  53. addi $s3, $s3, 1
  54. addi $s2, $s2, 4
  55. beq $s3, $s0, done
  56. j read_array
  57.  
  58. bubble_sort:
  59. outer:
  60. beq $s0, $s3, done
  61. sub $t0, $s0, $s3
  62. subi $t0, $t0, 1
  63. ori $t1, $zero, 0x0
  64. inner:
  65. beq $t1, $t0, continue_outer
  66. mul $t2, $t1, 4
  67. add $t3, $s1, $t2
  68. lw $t4, 0($t3)
  69. lw $t5, 4($t3)
  70. bgt $t4, $t5, to_swap
  71. continue_inner:
  72. addi $t1, $t1, 1
  73. j inner
  74. to_swap:
  75. mul $s2, $t1, 4
  76. sub $sp, $sp, 8
  77. move $s4, $ra
  78. jal swap
  79. move $ra, $s4
  80. addi $t1, $t1, 1
  81. j inner
  82. continue_outer:
  83. addi $s3, $s3, 1
  84. j outer
  85. swap:
  86. add $s6, $s1, $s2
  87. lw $t6, 0($s6)
  88. lw $t7, 4($s6)
  89. sw $t7, 0($s6)
  90. sw $t6, 4($s6)
  91. lw $s5, 0($sp)
  92. j done
  93.  
  94. print_array:
  95. beq $s3, $s0, done
  96. add $t0, $s1, $s2
  97. lw $t1, 0($t0)
  98. li $v0, 1
  99. move $a0, $t1
  100. syscall
  101.  
  102. move $t2, $s0
  103. addi $s3, $s3, 1
  104. addi $s2, $s2, 4
  105. beq $t2, $s3, last_one
  106. j others
  107. last_one:
  108. la $a0, nl
  109. li $v0, 4
  110. syscall
  111. j print_array
  112. others:
  113. la $a0, separator
  114. li $v0, 4
  115. syscall
  116. j print_array
  117. done:
  118. jr $ra
  119. exit:
  120. li $v0, 10
  121. syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement