Advertisement
Guest User

CodeSoFar

a guest
Dec 28th, 2022
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | Software | 0 0
  1. .data
  2. str1: .asciiz "\nEnter a number.\n"
  3. str2: .asciiz "The number "
  4. str3: .asciiz " has "
  5. str4: .asciiz " divisors."
  6. str5: .asciiz "The factorial of "
  7. str6: .asciiz " is "
  8. str7: .asciiz "."
  9. str8: .asciiz "The sum from 1 to "
  10. str9: .asciiz "The number needs to be a positive and whole."
  11.  
  12. .text
  13. .globl main
  14.  
  15. main:
  16. loop:
  17. li $v0, 4
  18. la $a0, str1
  19. syscall
  20.  
  21. li $v0, 5
  22. syscall
  23.  
  24. move $t0, $v0
  25.  
  26. blez $t0, error
  27.  
  28. add $a0, $v0, $0
  29. jal even_or_odd
  30.  
  31. even_or_odd:
  32. addi $t0, $0, 2
  33. div $a0, $t0
  34. mfhi $s0
  35. beq $s0, $0, even
  36. j odd
  37.  
  38. even:
  39. move $t0, $v0
  40.  
  41. li $t1, 0
  42. li $t2, 0
  43. divs:
  44. addi $t1, $t1, 1
  45. div $t0, $t1
  46. mfhi $s0
  47. beqz $s0, sum_of_divs
  48. jal divs
  49.  
  50. sum_of_divs:
  51. add $t2, $t2, 1
  52. blt $t1, $t0, divs
  53. beq $t1, $t0, print_divs
  54.  
  55. print_divs:
  56. li $v0, 4
  57. la $a0, str2
  58. syscall
  59.  
  60. li $v0, 1
  61. move $a0, $t0
  62. syscall
  63.  
  64. li $v0, 4
  65. la $a0, str3
  66. syscall
  67.  
  68. li $v0, 1
  69. move $a0, $t2
  70. syscall
  71.  
  72. li $v0, 4
  73. la $a0, str4
  74. syscall
  75.  
  76. j loop
  77.  
  78. odd:
  79. move $t0, $v0
  80. blt $t0, 10, less_than_10
  81. bge $t0, 10, greater_than_10
  82.  
  83. less_than_10:
  84. move $t0, $v0
  85. li $t1, 1
  86. li $t2, 0
  87.  
  88. factorial:
  89. addi $t2, $t2, 1
  90. mul $t1, $t1, $t2
  91. blt $t2, $t0, factorial
  92.  
  93. j print_factorial
  94.  
  95. print_factorial:
  96. li $v0, 4
  97. la $a0, str5
  98. syscall
  99.  
  100. li $v0, 1
  101. move $a0, $t0
  102. syscall
  103.  
  104. li $v0, 4
  105. la $a0, str6
  106. syscall
  107.  
  108. li $v0, 1
  109. move $a0, $t1
  110. syscall
  111.  
  112. li $v0, 4
  113. la $a0, str7
  114. syscall
  115.  
  116. j loop
  117.  
  118. greater_than_10:
  119. move $t0, $v0
  120. li $t1, 0
  121. li $t2, 0
  122. sum:
  123. addi $t1, $t1, 1
  124. add $t2, $t2, $t1
  125. blt $t1, $t0, sum
  126.  
  127. j print_sum
  128.  
  129. print_sum:
  130. li $v0, 4
  131. la $a0, str8
  132. syscall
  133.  
  134. li $v0, 1
  135. move $a0, $t0
  136. syscall
  137.  
  138. li $v0, 4
  139. la $a0, str6
  140. syscall
  141.  
  142. li $v0, 1
  143. move $a0, $t2
  144. syscall
  145.  
  146. li $v0, 4
  147. la $a0, str7
  148. syscall
  149.  
  150. j loop
  151.  
  152. error:
  153. li $v0, 4
  154. la $a0, str9
  155. syscall
  156.  
  157. exit:
  158. li $v0, 10
  159. syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement