Find MaximumΒΆ
Finds the maximum value in an array.
1; Find Maximum - Find max value and index in [12, 45, 7, 89, 23, 56, 34, 78]
2; Output: R16 = 89 (max value), R17 = 3 (index)
3
4start:
5 ; Initialize array at RAM[0x60..0x67]
6 ldi r20, 0x60
7 ldi r21, 12
8 st r20, r21
9 inc r20
10
11 ldi r21, 45
12 st r20, r21
13 inc r20
14
15 ldi r21, 7
16 st r20, r21
17 inc r20
18
19 ldi r21, 89 ; Maximum value
20 st r20, r21
21 inc r20
22
23 ldi r21, 23
24 st r20, r21
25 inc r20
26
27 ldi r21, 56
28 st r20, r21
29 inc r20
30
31 ldi r21, 34
32 st r20, r21
33 inc r20
34
35 ldi r21, 78
36 st r20, r21
37
38 ; Find maximum
39 ldi r16, 0 ; max = 0
40 ldi r17, 0 ; max_index = 0
41 ldi r18, 0x60 ; address
42 ldi r19, 8 ; count
43 ldi r20, 0 ; current_index
44
45find_loop:
46 ld r21, r18 ; Load array[i]
47
48 cp r16, r21 ; Compare max with current
49 brge no_update ; Skip if max >= current
50 mov r16, r21 ; max = current
51 mov r17, r20 ; max_index = i
52
53no_update:
54 inc r18 ; address++
55 inc r20 ; i++
56 dec r19 ; count--
57
58 cpi r19, 0
59 brne find_loop
60
61done:
62 jmp done
Demonstrates comparison operations and conditional logic.