By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,612 Members | 1,632 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,612 IT Pros & Developers. It's quick & easy.

Write a program to find and print a Fibonacci sequence of numbers in assembly

P: 1
Question Details:

Write a program to find and print a Fibonacci sequence of numbers. The Fibonacci sequence is defined as follow:

Fn = Fn-2 + Fn-1, n >= 0

F0 = 0, F1 = 1, F2 = 1

Your program should prompt the user to enter a limit and indicate whether the last number in the sequence printed is either even or odd.

Here is what the user will see when the program is executed:

This program prints the Fibonacci sequence

Enter a limit on the largest number to be displayed: 50

1 1 2 3 5 8 13 21 34

The last number in this sequence is an even number.

Do you want to print a different sequence (Y/N): n



the code is giving me segmentation fault core dumped and i can not test for the even and add #




.section ".data"
/*Variables*/
prompt: .asciz "\nThis program prints the Fibonacci sequence"
prompt2: .asciz "\nEnter a limit on the largest number to be displayed:"
prompt5: .asciz "\nDo you want to print a different sequence (Y/N):"

input: .word 0
yesNo: .byte 0
nl: .asciz "\n"
format1: .asciz "%d%c"
format2: .asciz "%c%c"

!CODE!

.align 8
.global main
.section ".text"

define(f_1, l0)
define(f_2, l1)
define(count, l2)

main:
save %sp, -96, %sp
repeat:
!!!!Welcome and initial prompt!!!
set prompt, %o0 !set welcome message
call printf !print it
nop

set prompt2, %o0 !ask fo a number
call printf
nop

set format1, %o0 !input needs to be an interger
set input, %o1 !address where input is stored
set nl, %o2 !dump
call scanf
nop


ld [%o1], %o0
mov %o0, %count
mov 1, %f_1
mov 1, %f_2
mov 1, %o0
call printf
nop
mov 1, %o0
call printf
nop
loop:
add %f_1, %f_2, %o0
call printf
mov %f_1, %f_2
mov %o0, %f_1
cmp %f_1, %count
ble loop



!!!Continue?!!!
set prompt5, %o0
call printf
nop

set format2, %o0 !getting a character and a newline
set yesNo, %o1
set nl, %o2
call scanf
nop

set yesNo, %l0
ldub [%l0], %o0 !get the ys/no from memory
cmp %o0, 'y'
be repeat
nop !yes then try again


ret !get out
restore
Oct 19 '09 #1
Share this Question
Share on Google+
1 Reply


Expert 100+
P: 2,398
Each processor has its own assembly language. Nobody can help you unless you identify the processor you're using. It might also be helpful to know who the assembler vendor is.

By the way, this is the C/C++ forum.
Oct 19 '09 #2

Post your reply

Sign in to post your reply or Sign up for a free account.