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
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.