Array SumΒΆ

Sums elements of an array stored in memory.

 1; Array Sum - Sum array elements [5, 10, 15, 20, 25, 30, 35, 40]
 2; Demonstrates array initialization and iteration
 3; Output: R16 = 180
 4
 5start:
 6    ; Initialize array at RAM[0x60..0x67]
 7    ldi r20, 0x60
 8    ldi r21, 5
 9    st r20, r21
10    inc r20
11    
12    ldi r21, 10
13    st r20, r21
14    inc r20
15    
16    ldi r21, 15
17    st r20, r21
18    inc r20
19    
20    ldi r21, 20
21    st r20, r21
22    inc r20
23    
24    ldi r21, 25
25    st r20, r21
26    inc r20
27    
28    ldi r21, 30
29    st r20, r21
30    inc r20
31    
32    ldi r21, 35
33    st r20, r21
34    inc r20
35    
36    ldi r21, 40
37    st r20, r21
38    
39    ; Sum array elements
40    ldi r16, 0        ; sum = 0
41    ldi r17, 0x60     ; address
42    ldi r18, 8        ; count
43
44sum_loop:
45    ld r19, r17       ; Load array[i]
46    add r16, r19      ; sum += array[i]
47    inc r17           ; address++
48    dec r18           ; count--
49    
50    ; continue if more elements remain
51    cpi r18, 0
52    brne sum_loop     ; branch if count != 0
53
54done:
55    jmp done          ; infinite loop (halt)

Demonstrates memory access and array processing.