Advertisement
Guest User

Untitled

a guest
May 6th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. .data
  2. enter: .asciiz "Enter the index of the number in the Fibonacci sequence you would like to compute: "
  3. res: .asciiz "The number is "
  4.  
  5. .text
  6. main:
  7. # Prompt
  8. li $v0, 4
  9. la $a0, enter
  10. syscall
  11.  
  12. # Read value
  13. li $v0, 5
  14. syscall
  15.  
  16. # Call Fibonacci
  17. la $a0, ($v0)
  18. jal fib
  19.  
  20. # Print result
  21. la $t0, ($v0)
  22. li $v0, 4
  23. la $a0, res
  24. syscall
  25. li $v0, 1
  26. la $a0, ($t0)
  27. syscall
  28.  
  29. j done
  30.  
  31. # fib(0) = 0
  32. # fib(1) = 1
  33. # fib n = fib (n - 1) + fib (n - 2)
  34. fib: addi $sp, $sp, -12
  35. sw $ra, 0($sp) # Store addr
  36. sw $a0, 4($sp) # Store n
  37. sw $s0, 8($sp) # Store last first fib
  38.  
  39. # Check if n is 0
  40. bnez $a0, fib1
  41. # If it is, return 0
  42. la $v0, ($zero)
  43. j fret
  44.  
  45. fib1: # Check if n is 1
  46. bne $a0, 1, fib2
  47. # If it is, return 1
  48. addi $v0, $zero, 1
  49. j fret
  50.  
  51. fib2: # Otherwise, we need to recursively add
  52. addi $a0, $a0, -1 # n - 1
  53. jal fib
  54. la $s0, ($v0) # fib(n - 1)
  55.  
  56. addi $a0, $a0, -1 # n - 2
  57. jal fib
  58. la $t1, ($v0) # fib(n - 2)
  59.  
  60. add $v0, $s0, $t1 # fib(n - 1) + fib(n - 2)
  61.  
  62. fret: lw $ra, 0($sp) # Restore addr
  63. lw $a0, 4($sp) # Restore n
  64. lw $s0, 8($sp) # Restore last fib
  65. addi $sp, $sp, 12 # Restore sp
  66.  
  67. jr $ra # Return
  68.  
  69. done:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement