Question
Need help with Assembly Language question. The Fibonacci sequence code is already provided (below). It is pre-coded to have an array of size 12 meaning
Need help with Assembly Language question.
The Fibonacci sequence code is already provided (below). It is pre-coded to have an array of size 12 meaning it will print 12 numbers of the Fibonacci sequence.
My Task: Change the Assembly language code (given below) so that it instead asks the user for the length of the array. And then prints that many numbers of the Fibonacci sequence.
fibonacci.asm |
# Compute first twelve Fibonacci numbers and put in array, then print .data # this is stuff you will store (variables, labeling, words etc.) fibs: .word 0 : 12 # "array" of 12 words to contain fib values size: .word 12 # size of "array" .text # program you want to run is under .text la $t0, fibs # load address of array la $t5, size # load address of size variable lw $t5, 0($t5) # load array size li $t2, 1 # 1 is first and second Fib. number add.d $f0, $f2, $f4 # adding f2 + f4, storing it in f0 sw $t2, 0($t0) # F[0] = 1 sw $t2, 4($t0) # F[1] = F[0] = 1 addi $t1, $t5, -2 # Counter for loop, will execute (size-2) times loop: lw $t3, 0($t0) # Get value from array F[n] lw $t4, 4($t0) # Get value from array F[n+1] add $t2, $t3, $t4 # $t2 = F[n] + F[n+1] sw $t2, 8($t0) # Store F[n+2] = F[n] + F[n+1] in array addi $t0, $t0, 4 # increment address of Fib. number source addi $t1, $t1, -1 # decrement loop counter bgtz $t1, loop # repeat if not finished yet. la $a0, fibs # first argument for print (array) add $a1, $zero, $t5 # second argument for print (size) jal print # call print routine. li $v0, 10 # system call for exit syscall # we are out of here. ######### routine to print the numbers on one line. .data space:.asciiz " " # space to insert between numbers head: .asciiz "The Fibonacci numbers are: " .text print:add $t0, $zero, $a0 # starting address of array add $t1, $zero, $a1 # initialize loop counter to array size la $a0, head # load address of print heading li $v0, 4 # specify Print String service syscall # print heading out: lw $a0, 0($t0) # load fibonacci number for syscall li $v0, 1 # specify Print Integer service syscall # print fibonacci number la $a0, space # load address of spacer for syscall li $v0, 4 # specify Print String service syscall # output string addi $t0, $t0, 4 # increment address addi $t1, $t1, -1 # decrement loop counter bgtz $t1, out # repeat if not finished jr $ra # return . |
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started