1
我是彙編語言的初學者。我正在使用Windows。我試着用從第二個答案這裏的代碼:Recursive Fibonacci in Assembly 給我的第n個Fibonacci數在nasm中打印斐波納契數字
Fibonacci: ; computes Fib(EAX) --> EAX; do not call with EAX==0
CMP EAX, 1 ; N<=1?
JBE exit ; yes, we have the answer
DEC EAX ; = N-1
PUSH EAX ; save N-1
CALL Fibonacci ; computing FIB(n-1)to EAX
XCHG EAX,0[ESP] ; swap FIB(n-1) for saved N-1
DEC EAX ; = N-2
CALL Fibonacci ; computing FIB(N-2) to EAX
POP ECX ; = FIB(N-1)
ADD EAX,ECX ; = FIB(N-1)+FIB(N-2)
exit:
RET
那部分工作,但我不能打印序列F(0)到F(10)
mov ecx,10
mov ebx,0
print_fib:
mov eax,ebx
call fibonacci
call print_int
inc ebx
loop print_fib
既然你已經在思考斐波那契數,你可能會發現http://stackoverflow.com/問題/ 32659715 /彙編語言-X86-如何創建一個循環到計算 - 斐波那契序列有趣。這是關於循環的非遞歸實現(因爲在O(n))時間內計算Fib(n)是愚蠢的,因爲如果在O(n)時間甚至O(log(n))時間內可以很容易計算它,如果你想變得更復雜)。作爲一個練習來編寫一個工作遞歸函數是有用的,但是我希望人們會選擇一個遞歸實現簡化的例子。 –