问题描述
C 代码
#include <stdio.h>
int fibonacci(int);
int main()
{
int x = fibonacci(3);
printf("Fibonacci is : %d",x);
return 0;
}
组装
section .text
global fibonacci
fibonacci:
push ebp;
mov ebp,esp;
; initialize
mov dword [prev],0x00000000;
mov dword [cur],0x00000001;
mov byte [it],0x01;
mov eax,dword [ebp + 8]; // n = 3
mov byte [n],al;
getfib:
xor edx,edx;
mov dl,byte [n];
cmp byte [it],dl;
jg loopend;
mov eax,dword [prev];
add eax,dword [cur];
mov ebx,dword [cur];
mov dword [prev],ebx;
mov dword [cur],eax;
inc byte [it];
jmp getfib;
loopend:
mov eax,dword [cur];
pop ebp;
ret;
section .bss
it resb 1
prev resd 1
cur resd 1
n resb 1
我试图在 C 代码和调试中运行这个汇编函数,我看到 C 代码中变量 x 中的值是正确的,但是当我使用 printf 函数时出现了一些错误
需要帮助
编译命令:
nasm -f elf32 asmcode.asm -o a.o
gcc -ggdb -no-pie -m32 a.o ccode.c -o a.out
如果图片看起来模糊,请单击下面的图片
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)