Guest User

Untitled

a guest
Dec 15th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. .globl main
  2. .data
  3. .align 5
  4. array: .asciiz "Joe"
  5. .align 5
  6. .asciiz "Jenny"
  7. .align 5
  8. .asciiz "Jill"
  9. .align 5
  10. .asciiz "John"
  11. .align 5
  12. .asciiz "Jeff"
  13. .align 5
  14. .asciiz "Joyce"
  15. .align 5
  16. .asciiz "Jerry"
  17. .align 5
  18. .asciiz "Janice"
  19. .align 5
  20. .asciiz "Jake"
  21. .align 5
  22. .asciiz "Jonna"
  23. .align 5
  24. .asciiz "Jack"
  25. .align 5
  26. .asciiz "Jocelyn"
  27. .align 5
  28. .asciiz "Jessie"
  29. .align 5
  30. .asciiz "Jess"
  31. .align 5
  32. .asciiz "Janet"
  33. .align 5
  34. .asciiz "Jane"
  35. .align 5
  36.  
  37. .align 2
  38. data: .space 64
  39.  
  40. size: .word 16
  41. .text
  42. main:
  43. lw $a0, size
  44. move $a1, $zero
  45. la $t0, array
  46. la $t1, data
  47.  
  48. data_int: sw $t0, 0($t1)
  49. addi $t0, $t0, 32 # initializes the data array
  50. addi $a1, $a1, 1
  51. addi $t1, $t1, 4
  52. beq $a0, $a1, insertSort
  53. b data_int
  54.  
  55.  
  56. str_lt: lb $t2, 0($a2) # $t2 is *x, $t3 is *y
  57. lb $t3, 0($a3)
  58. beq $t2, $zero, end_loop # if *x -- '\0', exit loop
  59. beq $t3, $zero, end_loop # if *y -- '\0', exit loop
  60. blt $t2, $t3, returnOne # if ( *x < *y ) return 1
  61. blt $t2, $t2, returnZero # if ( *x < *y ) return 0
  62. addi $a2, $a2, 1 # x++
  63. addi $a3, $a3, 1 # y++
  64. b str_lt # loop
  65.  
  66. end_loop: beq $t3, $zero, returnZero # if ( *y == '\0' ) return 0
  67. b returnOne # return 1
  68.  
  69. returnZero: li $v0, 0 # return 0
  70. jr $ra
  71.  
  72. returnOne: li $v0, 1 # return 1
  73. jr $ra
  74.  
  75.  
  76.  
  77. insertSort: li $t4 1 # char i
  78. la $s0, data
  79. lw $s1, size
  80.  
  81. iLoop: beq $t4, $s1, print_array
  82. mul $a0, $t4, 4
  83. add $s4, $a0, $s0 # *i
  84. lw $s7, ($s4)
  85.  
  86. lw $a2, ($s4)
  87. subi $t5, $t4, 1 #char j
  88.  
  89.  
  90. jLoop: bltz $t5 set
  91. mul $a1, $t5, 4
  92. add $s5, $a1, $s0 # *j
  93.  
  94. lw $a3, ($s5)
  95.  
  96. jal str_lt
  97. beqz $v0 set
  98.  
  99. addi $t6, $s5, 4
  100. lw $t9, ($s5) # a[j+1] = a[j];
  101. sw $t9, ($t6)
  102. subi $t5, $t5 1
  103. b jLoop
  104.  
  105. set: move $t9, $s7 # a[j+1] = value;
  106. mul $a1, $t5, 4
  107. add $t6, $a1, $s0
  108. addi $t6, $t6, 4
  109. sw $t9, ($t6)
  110. addi $t4, $t4, 1
  111. b iLoop
  112.  
  113. print_array: lw $s0, size
  114. move $s1, $zero
  115. la $s2, data
  116. print_loop: beq $s0, $s1, end
  117. lw $a0, ($s2)
  118. li $v0, 4
  119. syscall
  120. addi $s1, $s1, 1
  121. addi $s2, $s2, 4
  122. b print_loop
  123. end:
Add Comment
Please, Sign In to add comment