在一些作业中,我必须在Assembly中创建一个斐波那契数列程序。我创建了这个代码,但它似乎没有正常工作,我不知道为什么。我相信我正确地做到了这一点,但EAX在每个循环中都保持“2”。装配中的非递归斐波那契数列
INCLUDE Irvine32.inc
.data
prev DWORD ?
next DWORD ?
val DWORD ?
count DWORD ?
total DWORD ?
myMsg BYTE "Fibonacci Sequence ",0dh,0ah,0
.code
main PROC
mov ecx,15
mov val,1
mov prev,-1
mov eax,1
mov edx,OFFSET myMsg
call WriteString
L1:
mov count,ecx
mov ebx,val
add ebx,prev
mov total,ebx
mov ebx,val
mov prev,ebx
mov eax,total
mov val, ebx
call WriteInt
call Crlf
loop L1
exit
main ENDP
END main
我会在'add'后添加'sub ecx,1',并用'jnz _fib'替换'loop _fib'。但那只是我很无聊。 :P – 2012-03-07 22:56:22
这实际上运作良好。谢谢。我没有想到这样做。 – seiryuu10 2012-03-07 23:55:03