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.