Я пытаюсь написать версию кода Фибоначчи на ассемблере, которая дает n-е число Фибоначчи и возвращает его.
Почему-то возникают проблемы с сохранением возвращаемого значения чисел Фибоначчи и их сложением.
Я хочу напечатать n-е число Фибоначчи.
Я сделал некоторые изменения в моем коде, теперь он все еще неверен, но он ближе. Теперь он говорит мне, что 11-е число Фибоначчи равно 48. Все еще неверно, но мы где-то правы?
.text
.globl _fibonacci
_fibonacci:
pushl %ebp
movl %esp,%ebp
push %esi
movl 8(%ebp),%esi
cmp $1,%esi
jle BASE
sub $1,%esi
push %esi
call _fibonacci
add $4,%esp
movl %eax,%edx
sub $1,%esi
push %esi
call _fibonacci
add $4,%esp
add %eax,%edx
movl %edx,%eax
DONE:
pop %esi
pop %ebp
ret
BASE:
mov $1,%eax
jmp DONE
Я вызываю этот ассемблерный код, используя C:
#include <stdio.h>
int fibonacci(int n);
int main(void){
int n=111;
int x=fibonacci(n);
printf("The %d fibonaacci number is %d\n",n,x);
}