装配中的非递归斐波那契数列 [英] Non-recursive Fibonacci Sequence in Assembly
本文介绍了装配中的非递归斐波那契数列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在一些作业中,我必须在Assembly中创建一个Fibonacci Sequence程序.我创建了此代码,但它似乎无法正常工作,并且我不确定原因.我相信我做的正确,但是EAX在每个循环中都保持"2".
In some homework, I have to create a Fibonacci Sequence program in Assembly. I created this code, but it doesn't seem to be working correctly and I am not sure as to why. I believe that I am doing this correctly, but EAX remains "2" every loop.
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
推荐答案
可能看起来像这样(未经测试):
Could look like this (untested):
mov ecx, 15
mov eax, 0 ;a = 0
mov ebx, 1 ;b = 1
_fib:
mov edx, eax
add edx, ebx ;sum = a + b
mov eax, ebx ;a = b
mov ebx, edx ;b = sum
loop _fib
这篇关于装配中的非递归斐波那契数列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文