// // demo2: for loop to sum an array .global main, Stop, CodeEnd, DataStart, DataEnd .global A, sum, i .text main: mov r0,#0 movw r1,#:lower16:sum movt r1,#:upper16:sum str r0,[r1] mov r0,#0 movw r1,#:lower16:i movt r1,#:upper16:i str r0,[r1] while: movw r0,#:lower16:i movt r0,#:upper16:i ldr r0,[r0] // r0 = i cmp r0,#10 bge whileEnd // While body // sum=sum+A[i] movw r0,#:lower16:sum movt r0,#:upper16:sum ldr r1,[r0] // r1 = sum movw r2,#:lower16:A movt r2,#:upper16:A movw r3,#:lower16:i movt r3,#:upper16:i ldr r3,[r3] // r3=i add r3,r3,r3 add r3,r3,r3 // r3=4i ldr r2, [r2,r3] // r2=A[i] add r1,r1,r2 // r1 = RHS (sum+A[i]) str r1,[r0] // i++ (i=i+1) movw r0,#:lower16:i movt r0,#:upper16:i ldr r1,[r0] add r1,r1,#1 str r1,[r0] b while whileEnd: Stop: CodeEnd: nop /* -------------------------------------------------- Begin of the permanent program variables -------------------------------------------------- */ .data DataStart: A: .4byte 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 sum: .skip 4 i: .skip 4 DataEnd: .end