所以我之前发布了一个关于编写代码的问题,其中: 从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中正确加载,但在运行时它什么都不做。现在我的问题是我在检查数字是否均匀,然后将其打印在我的代码中?我打印出所有偶数的总和吗?我对这种汇编语言的东西很新,非常感谢帮助。
答案 0 :(得分:4)
社区可以回答您的具体问题,但更好的解决方案是帮助您开发一些调试技巧。当某些东西不起作用时,您需要向下钻取并找出失败的位置。由于您不熟悉ARM程序集,因此请尝试一次执行小块,然后将它们组合在一起以形成完整的程序。
你能编写一个打印数字的程序吗?
你能编写一个打印一系列数字的循环(例如循环计数器)吗?
你能写一个打印fibonnaci序列的循环吗?
你能写一个打印偶数斐波纳契数字的循环吗?
告诉我们您失败的步骤以及原因。