【问题标题】:Fibonacci even sum in ARM斐波那契偶数在 ARM 中的总和
【发布时间】:2014-02-19 19:23:35
【问题描述】:

所以我之前发布了一个关于在哪里编写代码的问题: 从 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 中正确加载,但是当我运行它时它什么也不做。现在我的问题是我检查数字是否是偶数然后在我的代码中打印它?以及我是否打印出所有偶数的总和?我对这种汇编语言非常陌生,非常感谢您的帮助。

【问题讨论】:

  • BNE ODDCHECK / BEQ LOOP 总是进行。此外,你还有一些奇怪的事情,比如 CMP R4,R5,你 A) 没有初始化 R5 和 B) 没有使用 CMP 设置的标志来做任何事情。

标签: assembly arm fibonacci


【解决方案1】:

社区可以回答您的具体问题,但更好的解决方案是帮助您培养一些调试技能。当某些事情不起作用时,您需要深入研究并找出故障所在。由于您是 ARM 汇编的新手,请尝试一次执行小块,然后将它们组合在一起以形成完整的程序。

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

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

你能写一个打印斐波那契数列的循环吗?

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

让我们知道您在哪一步失败以及原因。

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多