【发布时间】:2019-03-15 11:01:09
【问题描述】:
我刚开始从事编程和计算工作,得到了一个让我非常困惑的任务。它有两个部分 1.编写一个ARM汇编语言程序来计算第n个斐波那契数。这 第 n 个斐波那契数递归定义为: Fn= Fn-1 + Fn-2 其中 F0 = 0 且 F1 = 1。 对 n 使用 R2 并在 R0 中计算 Fn。通过计算 F16 和 F32 来测试你的程序。 2. 以你对 Q1 的回答为起点,编写一个 ARM 汇编语言程序 使用 (i) 32 位无符号算术计算最大可能的斐波那契数 (ii) 32 位有符号算术。确保报告 n 和 Fn 的值(在 十六进制和十进制)在您的项目提交中。
if (MAX - Fn-1
到目前为止我有:
AREA RESET, CODE, READONLY
ENTRY
start MOV R1, #16 ; n = 16
MOV R3, #0 ; fn1 = 0
MOV R0, #1 ; fn = 1
MOV R2, #1 ; curr = 1
whn CMP R2, R1 ; while (curr < 1)
BHS endwhn ; {
ADD R2, R2, #1 ; curr = curr + 1
MOV R4, R0 ; tmp = fn
ADD R0, R0, R3 ; fn = fn + fn1
MOV R3, R4 ; fn1 = tmp
B whn ; }
endwhn
STOP B STOP
END
【问题讨论】:
-
嗨,卡梅伦,欢迎来到 SO。您应该尝试花一些精力来格式化您的问题。代码 sn-ps 应该放在代码块中。您也可以使用项目符号和编号。
-
请不要使用随机标签 - 这与 Java 有什么关系?
-
另外,将代码复制并粘贴到问题中。
-
您还没有在这里真正描述您的问题。您已经说明了您想要实现的目标,并且您已经提供了您当前的代码。但是,您当前的代码究竟做了什么不应该做的事情,或者不应该做的事情?尽可能具体。