Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Problem Description: Write and test the fib function in two linked files. Your s

ID: 3737255 • Letter: P

Question

Problem Description:

Write and test the fib function in two linked files. Your solution must be made up of a function called fib(N, &array) to store the first N elements of the Fibonacci sequence into an array in memory. The value N is passed in $a0, and the address of the array is passed in register $a1. The first few numbers of the Fibonacci sequence are 1, 1, 2, 3, 5, 8, 13 …

Your solution must also include an assembly 'main' program that accepts an integer from the user less than or equal to 45. Call the fib function and print the results. Prompt the user for the input. It can be assumed that the input value is <= 45.

Interesting video on Fibonacci.

Submit the Following File(s):

Fib.asm, fib_main.asm

Required Input:

An unsigned 32-bit integer up to 45.

Required Output:

Your output should look something like the following example.

Explanation / Answer

.DATA

n                      DB                  DUP(?)                                                                       

inp                   DB                  "How many elements of the Fibonacci series : $"

arr                    DW                 45DUP(?)

.MAIN

MOV AX,DATA

MOV DS,AX

LEA    DX,inp

MOV AH,9

INT                 21H

CMP                AL,45

BGT                EXIT

MOV               n, AL

LEA                $a0, n

LEA                $a1, arr

PUSH $a0

PUSH $a1

call       fib

           

fib:

PUSH ebp

MOV               ebp, esp

CMP                $a0, 0

MOV [a1],0

MOV               DL, $a1

INT                 21H

JMP                 RET

CMP                $a0, 1

MOV [a1],0

MOV               DL, $a1

INT                 21H

INC                 $a1

MOV               [a1],1

MOV               DL, $a1

INT                 21H

JMP     RET

MOV [a1],0

INC                 $a1

MOV               DL, $a1

INT                 21H

MOV               [a1],1

MOV               DL, $a1

INT                 21H

INC                 $a1

MOV               $a2, 0

MOV               $a3, 1

SUB                $a4,$a0,2                                                                     ; Already 2 elements have been added

LOOP:

BEZ                $a4, RET

ADD               [a1], $a2, $a3

MOV               DL, $a1

INT                 21H

MOV               $a2, $a3

MOV               $a3,[a1]

INC                 $a1

INC                 $a4

JMP                 LOOP

RET:

MOV               esp, ebp

POP                 ebp

ret

EXIT:

_exit

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote