# test program for stage 2: Fibonacci Number Calculation # ----- INSTRUCTION 0-15: INITIALIZE ----- # LLB R8, 11 LHB R8, 0 # R8 = 11 is the input index LLB R9, 1 # R9 = 1 LLB R10, 0x80 # R10 = 0x80 is the memory location SUB R8, R8, R0 # CHECK IF R8 == 0 B 000, L0 # EARLY EXIT SUB R1, R8, R9 # CHECK IF R8 == 1 B 000, L0 # EARLY EXIT SUB R8, R8, R9 LLB R4, 0 # R4 IS THE DESIRED FIBONACCI NUMBER LLB R2, 0 # R2 IS THE ZEROTH NUMBER LLB R3, 1 # R3 IS THE FIRST NUMBER SW R4, R10, 0 # [0x80] = 0 B 111, L1 L0: SW R8, R10, 0 # [0x80] = R8 B 111, L3 # L3 IS FINISH # ----- INSTRUCTION 16-19: LOOPING COMPUTATION ------ # L1: JAL L2 # JUMP TO SUBROUTINE L2 SUB R8, R8, R9 # R8=R8-1 B 001, L1 # IF R8!=0, CONTINUE RL R0, R0, 0 # NOP # ----- INSTRUCTION 20-27: FINISH ------ # LW R14, R10, 0 # should GIVE R14 = 89 LLB R11, 28 LLB R12, 16 EXEC R11 # should GIVE R4 = 144 EXEC R12 # should do nothing L3: B 111, L3 # jump to self: infinite loop RL R0, R0, 0 # NOP RL R0, R0, 0 # NOP # ----- INSTRUCTION 28-32 : SUBROUTINE ----- # L2: ADD R4, R2, R3 # R4 = R2+R3 SW R4, R10, 0 ADD R2, R0, R3 # NEXT R2 = CURRENT R3 LW R3, R10, 0 # NEXT R3 = CURRENT R4 JR R15 # RETURN