; ; CPE 221 Assembly Example ; ; This program adds a scalar value to all the elements in one ; array and stores that in another array. ; ; int main() ; { ; const int size = 10; ; int x[size] = {100, 3, -1, 2, 4, 4, 2, -1, 3, 100}; ; int y[size] = {-53, 247, 95, -7, 481, 91, -33, 1500, 29 -83}; ; int z[size]; ; int i; ; for (i = 0; i < size; i++) ; z[i] = x[i] + y[i]; ; } ; AREA SUM_ARRAYS, CODE, READONLY la r29, loop la r28, done la r10, array1 ; pointer to first element of array1 la r11, array2 ; pointer to first element of array2 la r12, array3 ; pointer to first element of array3 ld r1, size ; holds size of arrays ld r2, i ; holds loop counter loop: sub r3, r2, r1 ; compute i - size brpl r28, r3 ; if i - size >= 0, done ld r3, 0(r10) ; r3 = array1[i] ld r4, 0(r11) ; r4 = array2[i] add r4, r4, r3 ; r4 = array1[i] + array2[i] st r4, 0(r12) ; Store result in array3. addi r10, r10, 4 ; update r10 to point to next element of array1 addi r11, r11, 4 ; update r11 to point to next element of array2 addi r12, r12, ; update r12 to point to next element of array3 addi r2, r2, 1 ; i++ br r29 done: stop END size: .dc 10 i: .dc 0 array1: .dc 100, 3, -1, 2, 4, 4, 2, -1, 3, 100 array2: .dc -53, 247, 95, -7, 481, 91, -33, 1500, 29, -83 array3: .dw 10