; fib_simple.asm. Compute Fibonnaci numbers using a loop ; only using registers ; this assumes n>2 ; initialize some values into registers ; this program assumes r0 = 0 ; r1 current_result ; r2 fib(n-1) ; r3 fib(n-2) ; r4 n - how many fib numbers will we calculate? lar r31, loop ; put the address of loop label in r31 addi r1, r0, 0 ; initialize current_result to 0 addi r2, r0, 1 ; initialize fib(n-1) to fib(1) = 1 addi r3, r0, 0 ; initialize fib(n-2) to fib(0) = 0 addi r4, r0, 5 ; initialize number of iterations desired to 5 ; We want to calculate 5 fib numbers beyond Fib(0), Fib(1)... so Fib(6) loop: add r1, r2, r3 ; compute result and store in r1 add r3, r0, r2 ; set fib(n-2) register to hold fib(n-1) add r2, r0, r1 ; set fib(n-1) register to hold current_result addi r4, r4, -1 ; subtract 1 from the loop counter brnz r31, r4 ; if loop counter is still not zero loop again stop ; stop executing