34 lines
1.1 KiB
ArmAsm
34 lines
1.1 KiB
ArmAsm
; The N-th element of Fibbonaci sequence - recursive variant
|
|
|
|
push 6
|
|
call &fibb
|
|
clr 1
|
|
halt
|
|
|
|
fibb: lda 0 ; n | Stack:
|
|
ldl 0 ; n == 0 -> return 1 | n
|
|
je &.done0 ; | n
|
|
pop ; |
|
|
ldl 0 ; n == 1 -> return 1 | n
|
|
push 1 ; | n 1
|
|
sub ; | n-1
|
|
je &.done1 ; | n-1
|
|
dup ; Evaluate fibb | n-1 n-1
|
|
push 1 ; | n-1 n-1 1
|
|
sub ; | n-1 n-2
|
|
call &fibb ; | n-1 n-2 f(n-2)
|
|
clr 1 ; | n-1 f(n-2)
|
|
over ; | n-1 f(n-2) n-1
|
|
call &fibb ; | n-1 f(n-2) n-1 f(n-1)
|
|
clr 1 ; | n-1 f(n-2) f(n-1)
|
|
add ; | n-1 f(n-2)+f(n-1)
|
|
ret
|
|
|
|
.done1: pop
|
|
push 1
|
|
ret
|
|
|
|
.done0: pop
|
|
push 1
|
|
ret
|