Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. print:
  2.  
  3. .asciiz "Odd: "
  4. .text
  5. fact:
  6. sw $fp, ($sp)
  7. move $fp, $sp
  8. subu $sp, $sp, 12
  9. sw $ra, -4($fp)
  10. sw $v0, -8($fp)
  11. lw $a0, 4($fp)
  12. bgt $a0, 1, recurs
  13. li $v0, 1
  14. b return
  15. recurs:
  16. lw $a0, 4($fp)
  17. subu $a0, $a0, 1
  18. sw $a0, ($sp)
  19. subu $sp, $sp, 4
  20. lw $v0, -8($fp)
  21. jal fact
  22. lw $a0, 4($fp)
  23. mul $v0, $v0, $a0
  24. addi $t0, 2
  25. lw $t2, 4($fp)
  26. div $t2, $t0
  27. mfhi $t1
  28. beq $t1, 0, return
  29. li $v0, 4
  30. la $a0, print
  31. syscall
  32. li $v0, 1
  33. lw $a0, answer
  34. syscall
  35.  
  36. return:
  37. lw $ra, -4($fp)
  38. move $sp, $fp
  39. lw $fp, ($sp) # RESTORE OLD FRAME POINTER
  40. jr $ra
  41. # The main program
  42.  
  43. .text
  44. .globl main
  45. main:
  46. sw $fp, ($sp) # PUSH OLD FRAME POINTER (DYNAMIC LINK)
  47. move $fp, $sp # FRAME POINTER NOW POINTS TO THE TOP OF STACK
  48. subu $sp, $sp, 20 # ALLOCATE TWENTY BYTES IN THE STACK
  49. sw $ra, -4($fp)
  50. sw $v0, -8($fp)
  51.  
  52. loop:
  53. .data
  54. prompt:
  55. .asciiz "Number? "
  56. .text
  57. li $v0, 4
  58. la $a0, prompt
  59. syscall
  60. li $v0, 5
  61. syscall
  62. sw $v0, -12($fp)
  63. blez $v0, prompt
  64. lw $a0, -12($fp)
  65. sw $a0, ($sp)
  66. subu $sp, $sp, 4
  67. move $v0, $fp
  68. jal fact
  69. sw $v0, -16($fp)
  70. .data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement