I'm creating a fibonacci program in mic1, which is a little more readable than other assembly languages so even if you don't know the language it shouldn't be hard to figure out what the code is trying to do if you are good with stacks and recursion.
This is the code I have come up with for my best attempt after many other failed attempts. It is still not coming up with the correct answer and I am getting quite frustrated. Any help would be appreciated, even if you can't suggest code. I just kind of need to be pointed in the right direction, or where I am going wrong.
This is also not the whole program, it is just the part which I believe is going wrong.
fib: LODL 1 ; ac = top of stack JZER done0: ; if ac = 0 then return 0 SUBD one: ; ac != 0 ac = ac-1 JZER done1: ; if ac = 0 now then return 1 PUSH ; push ac onto stack CALL fib: ; call fib(n-1) POP ; pop most recent return value off stack into ac ADDD count: ; ac = ac + count STOD count: ; count = ac LODL 1 ; load top of stack into ac SUBD two: ; ac = ac-2 PUSH ; push (n-2) onto stack CALL fib: ; call fib(n-2) POP ; pop most recent return value off stack into ac ADDD count: ; ac = ac + count PUSH ; push ac onto stack RETN ; return value done0: PUSH ; push ac onto stack (ac = 0) RETN ; return 0 HALT done1: LODD one: ; load value of 1 into ac PUSH ; push ac onto stack RETN ; return 1 HALT one: 1 ; variable one = 1 two: 2 ; variable two = 2 count: 0 ; variable count starts at 0