Implementing Load Instructions for Computing Fibonacci NumbersĀ 

.text .global main main: MOV R1, #34 /* set values on the registers 1 to 3 */ MOV R2, #54 MOV R3, #21 MOV R0, #0 /* register to hold answer */ MOV R0, R1 /* assume R1 is the largest value */ CMP R0, R2 /* see if R0 is bigger than R2 */ BGE ifR3 /* if so, now compare with R3 */ MOV R0, R2 /* else, R2 is the biggest, save in R0 */ ifR3: CMP R0, R3 /* see if R0 is bigger than R3 */ BGE end /* if so, R0 is the biggest, end program */ MOV R0, R3 /* else, R3 is the biggest, save in R0 */ end: BX LR /* return and exit program */ .text .global main main: MOV R0, #23 /* counter of terms to generate only 25 terms (23 + the 2 initial ones)*/ MOV R1, #1 /* first fibonacci number */ MOV R2, #1 /* second fibonacci number */ fibloop: ADD R3, R1, R2 /* calculate new Fibonacci number adding the 2 previous ones */ MOV R1, R2 /* move the second number down for the next iteration */ MOV R2, R3 /* set sum as a new second number to sum for next iteration */ SUBS R0, R0, #1 /* decrement term counter */ BNE fibloop /* repeat while the counter is not zero */ MOV R0, R2 /* save last fibonacci number in R0 for returning it */ end: BX LR /* return and exit program */ .text .global main main: /* load values on the registers 1 to 3 */ LDR R1, =N1 LDR R1, [R1] /* load N1 value into R1 */ LDR R2, =N2 LDR R2, [R2] /* load N2 value into R2 */ LDR R3, =N3 LDR R3, [R3] /* load N3 value into R3 */ MOV R0, #0 /* register to hold answer */ MOV R0, R1 /* assume R1 is the largest value */ CMP R0, R2 /* see if R0 is bigger than R2 */ BGE ifR3 /* if so, now compare with R3 */ MOV R0, R2 /* else, R2 is the biggest, save in R0 */ ifR3: CMP R0, R3 /* see if R0 is bigger than R3 */ BGE endif /* if so, R0 is the biggest, end comparisons */ MOV R0, R3 /* else, R3 is the biggest, save in R0 */ endif: LDR R4, =LARGEST STR R0, [R4] /* save largest value in the variable */ end: BX LR /* return and exit program */ .data .balign 4 /* declare the 3 numbers to use */ N1: .word 34 N2: .word 54 N3: .word 21 /* place to save the largest value */ LARGEST: .skip 4 .text .global main main: MOV R0, #23 /* counter of terms to generate only 25 terms (23 + the 2 initial ones)*/ LDR R4, =fib_numbers /* get the address of the fibobacci number array into R4 */ MOV R1, #1 /* first fibonacci number */ STR R1, [R4], #4 /* save number in array, increment pointer */ MOV R2, #1 /* second fibonacci number */ STR R2, [R4], #4 /* save number in array, increment pointer */ fibloop: ADD R3, R1, R2 /* calculate new Fibonacci number adding the 2 previous ones */ MOV R1, R2 /* move the second number down for the next iteration */ MOV R2, R3 /* set sum as a new second number to sum for next iteration */ STR R2, [R4], #4 /* save number in array, increment pointer */ SUBS R0, R0, #1 /* decrement term counter */ BNE fibloop /* repeat while the counter is not zero */ MOV R0, R2 /* save last fibonacci number in R0 for returning it */ end: BX LR /* return and exit program */ .data .balign 4 /* place to save the first 25 Fibonacci numbers (25*4), initialize to zero */ fib_numbers: .skip 100, 0