Question

The task will be to write a program in assembler to enter a number and calculate...

The task will be to write a program in assembler to enter a number and calculate its associated Fibonacci number using a procedure (subroutine) that is called recursively.

Factorial and Fibonacci(outline Programs)

# MIPS assembly assembly assemblyassemblycode

.data

n: .word 4

.text

main: la $s0,n

lw $a0, 0($s0)

jal factorial

# move what ever is returned into $a0

move $a0, $v0

li $v0,1

syscall

b finished

factorial: add $sp , $sp , -8 # make room

sw $a0, 4($sp ) # store $

sw $ra 0($sp ) # store $ra

add $t0, $0, 2

slt $t0, $a0, $t0 # a <= 1 ?

beq $t0, 0, else # no : go to else

addi $v0, $0, 1 # yes : return 1

addi $sp , $sp , 8 # restore $sp

jr $ra # return

else: add $a0, $a0, -1 # n = -1

jal factorial # recursive call

lw $ra , 0($sp ) # restore restore restore $ra

lw $a0, 4($sp ) # restore restore restore $a0

addi $sp , $sp , 8 # restore restore restore $sp

mul $v0, $a0, $v0 # n * factorialfactorial

#add $v0, $a0, $v0 # n * factorialfactorial

jr $ra # return

finished:

# Fibanocci numbers

# Note any value above 46 will generate an overflow.

please help me finish it, there are three places need to add some code

0 0
Add a comment Improve this question Transcribed image text
Answer #1

# MIPS assembly assembly assemblyassemblycode

.data

n: .word 4

.text

main: la $s0,n

lw $a0, 0($s0)

jal factorial

# move what ever is returned into $a0

move $a0, $v0

li $v0,1

syscall

b finished

factorial: add $sp , $sp , -8 # make room

sw $a0, 4($sp ) # store $

sw $ra 0($sp ) # store $ra

add $t0, $0, 2

slt $t0, $a0, $t0 # a <= 1 ?

beq $t0, 0, else # no : go to else

addi $v0, $0, 1 # yes : return 1

addi $sp , $sp , 8 # restore $sp

jr $ra # return

else: add $a0, $a0, -1 # n = -1

jal factorial # recursive call

lw $ra , 0($sp ) # restore restore restore $ra

lw $a0, 4($sp ) # restore restore restore $a0

addi $sp , $sp , 8 # restore restore restore $sp

mul $v0, $a0, $v0 # n * factorialfactorial

#add $v0, $a0, $v0 # n * factorialfactorial

jr $ra # return

finished:

# Fibanocci numbers

# Note any value above 46 will generate an overflow.

Add a comment
Know the answer?
Add Answer to:
The task will be to write a program in assembler to enter a number and calculate...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • .data prompt: .asciiz "Input an integer x:\n" result: .asciiz "Fact(x) = " .text main: # show prompt li $v0, 4 la $a0, prompt syscall # read x li $v0, 5 syscall # function call move $a...

    .data prompt: .asciiz "Input an integer x:\n" result: .asciiz "Fact(x) = " .text main: # show prompt li $v0, 4 la $a0, prompt syscall # read x li $v0, 5 syscall # function call move $a0, $v0 jal factorial # jump factorial and save position to $ra move $t0, $v0 # $t0 = $v0 # show prompt li $v0, 4 la $a0, result syscall # print the result li $v0, 1 # system call #1 - print int move $a0,...

  • The following MIPS assembly code contains a mistake that violates the MIPS convention in terms of...

    The following MIPS assembly code contains a mistake that violates the MIPS convention in terms of using stack for storing/protecting registers. What is the mistake and how should it be fixed? Correct the corresponding lines in the code. For the corrected code, sketch the stack frame contents at the time when the instruction ‘move $s1, $a1’ is being executed. f:   addi $sp, $sp, 12 sw   $ra, 8($sp) sw   $s1, 4($sp) sw   $s0, 0($sp) move $s0, $a0 move $s1, $a1              #...

  • ASSEMBLY LANGUAGE (Mars MIPS) Starting code: Factorial: #Factorial Recursive function subu $sp, $sp, 4 sw $ra,...

    ASSEMBLY LANGUAGE (Mars MIPS) Starting code: Factorial: #Factorial Recursive function subu $sp, $sp, 4 sw $ra, 4($sp) # save the return address on stack beqz $a0, terminate # test for termination subu $sp, $sp, 4 # do not terminate yet sw $a0, 4($sp) # save the parameter sub $a0, $a0, 1 # will call with a smaller argument jal Factorial # after the termination condition is reached these lines # will be executed lw $t0, 4($sp) # the argument I...

  • MIPS Insertion program.........I could really use some help ASAP

    I have this MIPS program and I'm having trouble with it. This program is user inputs numbers until zero and sorts and print the numbers in order. Please soove this issue. You can use any sorting algorithm except bubble sort.  Need it as soon as possible. Here is the code:.datanum: .word 0space: .byte ' ' .text main:  # la $t0, val # loads val into a register  # li $t1, 0      #keeps track of how many numbers entered  la $a0,...

  • WRITE THE FOLLOWING CODE IN FLOATING POINT NUMBERS IN ASSEMBLY LANGUAGE USING MIPS IN MARS .data...

    WRITE THE FOLLOWING CODE IN FLOATING POINT NUMBERS IN ASSEMBLY LANGUAGE USING MIPS IN MARS .data prompt: .asciiz "\nMaximum number is : " prompt1: .asciiz "\nMinimum number is : " prompt2: .asciiz "\nRange of the array is : " size: .word 10 #load array array: .word 23, -12, 45, -32, 52, -72, 8, 13,22,876 .text #load address of array and size la $s4,array #load address of A lw $t0,size #load i to t0 jal getArrayRange li $v0, 4    la...

  • Write a MIPS program that prints(displays) "Hello World" using MMIO (NOT syscall!) Here is a scre...

    Write a MIPS program that prints(displays) "Hello World" using MMIO (NOT syscall!) Here is a screenshot of a MIPS program that prints user input to the screen. And I need something that displays "Hello World" without taking any input. Please help! Thanks. The output should be something like this but without the input .data 7 strl:.asciiz "\nStart entering characters in the MMIO Simulator" .text 10 .globl echo 12 13 14 15 16 17 echo: al Read # single print statement...

  • QT Spim question. Program and answer already given please explaine it. Please explain the reason why...

    QT Spim question. Program and answer already given please explaine it. Please explain the reason why each instruction was used throughout the program step by step given the prompt, what is its purpose to achive the goal asked in the prompt, why is written in that order. Please not just write to the side what each instruction means in words like load $t0 to $t1. I want to understand the program thoroughly. Thanks in advance Previous information needed to solve...

  • In the SPIM simulator in MIPS assembly, write the itri routine in the itri.s skeleton to...

    In the SPIM simulator in MIPS assembly, write the itri routine in the itri.s skeleton to make it print an inverted triangle. The height of the triangle will be given in $a0, and will be between 1 and 40 inclusive. For the first three tests, the included test harness should print (spimsimulator(dot)sourceforge(dot)net) 1. (25 pts.) In the SPIM simulator in MIPS assembly, write the itri routine in the itri.s skeleton to make it print an inverted trian- gle. The height...

  • Write a MIPSzy subroutine, power, that accepts 2 arguments x and y and computes x^y ....

    Write a MIPSzy subroutine, power, that accepts 2 arguments x and y and computes x^y . You can assume that x and y are both larger than 0. The main program passes the two parameters and receives the return value through the program stack. addi $t0, $zero, 5100 top: lw $t1, 0($t0) beq $t1, $zero, done addi $sp, $sp, -4 sw $t1, 0($sp) addi $t2, $zero,4 addi $sp, $sp, -4 sw $t2, 0($sp) addi $sp, $sp, -4 jal power lw...

  • Write a MIPS program with the following specifications: Use the my_mul function in question 1 to...

    Write a MIPS program with the following specifications: Use the my_mul function in question 1 to create a function which computes factorials: n! = n. (n - 1). … 3 .2 . 1 Note: You can only use my_mul function, and not use other functions). Each function must save all variables it modifies. below is my_mul my_mul : #multiply $a0 with $a1 #does not handle negative $a1 ! #Note : This is an inefficient way to multiply ! addi $sp,...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT