Here is an implementation in C. Should be straightforward to translate to ASM.
#include<stdio.h>
int main()
{
int n, first = 0, second = 1, next, c;
printf("Enter the number of terms\n");
scanf("%d",&n);
printf("First %d terms of Fibonacci series are :-\n",n);
for ( c = 0 ; c < n ; c++ )
{
if ( c <= 1 )
next = c;
else
{
next = first + second;
first = second;
second = next;
}
printf("%d\n",next);
}
return 0;
}
The M68000
has enough registers to do this without push
but if you have to use this instruction for a homework assignment, then you could make use of it in the else
clause where the variables are exchanged, thus limiting yourself to using a minimum of registers. Same could be said for the loop.