Я только что получил вопрос о программе сборки для последовательности Фибоначчи.Вопрос заключается в следующем: последовательность Фибоначчи F
определяется как F(1) = F(2) = 1
и для n ≥ 2
, F(n + 1) = F(n) + F(n − 1)
, т. Е. Значение (n + 1)th
определяется суммой значений nth
и (n − 1)th
значение.
- Напишите программу сборки, типичную для машин RISC, для вычисления значения
kth
F(k)
, где k
- это натуральное число, большее 2
, загруженное из ячейки памяти M
и сохраняя результат в ячейке памяти M
.
Я получил ответ следующего содержания:
LOAD r2, M
LOAD r0, #1
LOAD r1, #1
4: SUB r2, r2, #1
ADD r3, r0, r1
LOAD r0, r1
LOAD r1, r3
BNE 4, r2, #2 // jump to instruction 4 if r2 is not equal to 2
STOR M, r1
, где # означает немедленную адресацию, а BNE означает "ветвь, еслине равны ".
Я не понимаю, почему ... Может кто-нибудь объяснить мне?