斐波那契甚至在ARM中总结

时间:2014-02-19 19:23:36

标签: assembly arm fibonacci

所以我之前发布了一个关于编写代码的问题,其中:   从1开始,打印所有偶数斐波纳契数字,最高可达10946(含)

打印您打印的所有数字的总和。

您必须使用循环

您必须使用条件分支来测试偶数/奇数 我意识到我做错了所以我重写了我的代码并提出了这个

.equ Stdout, 1 
.equ SWI_Exit, 0x11 
.global _start
.text
_start:

MOV R2,#0 @Starting value of 0 to register 1
MOV R3,#1 @starting val of 1 to register 2




LOOP: 
LDR R4,=10946 @register gets this value
ODDCHECK:
CMP R4,R5
ADD R4,R2,R3 @adding to cehck if its odd

TST R4,#1
MOV R3,R2   @ answer is 0
MOV R2,R4   @result is in R4 adds to R2 is 0=1
BNE ODDCHECK
BEQ LOOP    @exiting the loop if it reaches final number
MOV R0,#Stdout
MOV R1,R5
SWI SWI_PrInt @Print out all the numbers
LDR R1, =NL 
SWI SWI_PrStr 

B LOOP

    After:
    SWI SWI_Exit
.data
NL: .asciz"\n"

这在ARM中正确加载,但在运行时它什么都不做。现在我的问题是我在检查数字是否均匀,然后将其打印在我的代码中?我打印出所有偶数的总和吗?我对这种汇编语言的东西很新,非常感谢帮助。

1 个答案:

答案 0 :(得分:4)

社区可以回答您的具体问题,但更好的解决方案是帮助您开发一些调试技巧。当某些东西不起作用时,您需要向下钻取并找出失败的位置。由于您不熟悉ARM程序集,因此请尝试一次执行小块,然后将它们组合在一起以形成完整的程序。

你能编写一个打印数字的程序吗?

你能编写一个打印一系列数字的循环(例如循环计数器)吗?

你能写一个打印fibonnaci序列的循环吗?

你能写一个打印偶数斐波纳契数字的循环吗?

告诉我们您失败的步骤以及原因。