------------------ codice senza ciclo ------------------ // faccio la prima somma: // leggo primo e secondo elemento // e li sommo INC R0 R0 r0 = r0+1 r0 = 27 LD R2 R0 r2 = 11 INC R0 R0 r0 = r0+1 r0 = 28 LD R3 R0 r3 = 22 ADD R2 R2 R3 r2 = r2+r3 r2 = 33 // leggo terzo elemento e lo sommo INC R0 R0 r0++ r0 = 29 LD R4 R0 r4 = 33 ADD R2 R2 R4 r2 = 66 // leggo quarto elemento e lo sommo INC R0 R0 r0++ r0 = 30 LD R3 R0 r3 = 44 ADD R5 R2 R3 // salvo il risultato in memoria ST R1 R5 ---------------- codice con ciclo ---------------- LD R2, R0 // num = M[r0] = 200 LDI R3, 0 // somma = 0 LDI R4, 0 // i=0 SUB R5, R2, R4 // r5 = num-i BRZ R5, 7 // se i==num salta il ciclo INC R0, R0 // in r0 abbiamo 27 LD R6, R0 // elem = pippo[r0] ADD R3, R3, R6 // somma += elem (r6) INC R4, R4 // i++ LDI R7, 3 JMP R7 ST R1, R3 ------ istruzioni con indirizzo addr OP 0 LD R2 R0 1 LDI R3 0 2 LDI R4 0 3 SUB R5 R2 R4 4 BRZ R5 7 5 INC R0 R0 6 LD R6 R0 7 ADD R3 R3 R6 8 INC R4 R4 9 LDI R7 3 10 JMP R7 11 ST R1 R3