This assignment covers the usage of basic arithmetic instructions as used in assignment 1, along with
understanding of arrays and how arrays are stored in the main memory. Please make sure that you
understand all the material covered until week 16 lectures. This assignment will mainly test your
understanding of arrays, how to store them and how to access them from assembly language code.
To complete this assignment, you need to understand 1) different memory addressing modes supported
by the x86 instruction set 2) Using JUMP instructions to implement loop iterations 3) How arrays are
stored in the memory. You also need to understand to use basic arithmetic instructions, which you
should have a good grip on after completing assignment #1.
Reverse Fibonacci sequence
The Fibonacci sequence is the sequence of numbers
In this sequence, the first two numbers are 0 and 1, and every new number of the sequence can be
computed by adding two previous numbers in the sequence. The function to compute Fibonacci
sequence is defined as
𝑤ℎ𝑒𝑟𝑒 𝑓(0)=0,𝑎𝑛𝑑 𝑓(1)=1
In this task, you will first print a few numbers from the fabonacci sequence and store it in an array. Then
you will create another array and print the computed fabanocci sequence in reverse. The details of the
procedure are given in next section.
Create a new MASM project by following the procedure as described in the tutorial. Go to the main.asm
file and copy the following code. In the code provided below, the number of elements of the Fibonacci
sequence to be printed are stored in the variable “fibonacci” and the output result should be stored as
an array with the array starting at location “fib_sequence” and the reverse of the array “fib_sequence”
needs to be stored in a separate array called “reverse_fibonacci”. Please note that this must be
implemented using JUMP instruction to do loop iterations so that the code works for every valid input
value (hard coding not allowed). To aid your programming, you can define more variables if you like. .386
.model flat, stdcall
ExitProcess PROTO, dwExitCode: DWORD
; define your variables here
fibonacci byte 12
fib_sequence byte 0
reverse_fibonacci byte 0
; write your assembly code here
INVOKE ExitProcess, 0
Please submit a single .asm file implementing the task as described.