Memory CopyΒΆ

Copies data from one memory location to another.

 1; Memory copy: copy 6 bytes from RAM[0x60..0x65] to RAM[0x70..0x75]
 2; Output: RAM[0x70..0x75] = copy of RAM[0x60..0x65]
 3
 4start:
 5    ; store source data at RAM[0x60..0x65]
 6    ldi r20, 0x60
 7    ldi r21, 10
 8    st r20, r21
 9    
10    ldi r20, 0x61
11    ldi r21, 20
12    st r20, r21
13    
14    ldi r20, 0x62
15    ldi r21, 30
16    st r20, r21
17    
18    ldi r20, 0x63
19    ldi r21, 40
20    st r20, r21
21    
22    ldi r20, 0x64
23    ldi r21, 50
24    st r20, r21
25    
26    ldi r20, 0x65
27    ldi r21, 60
28    st r20, r21
29    
30    ; copy to destination
31    ldi r16, 0x60     ; src
32    ldi r17, 0x70     ; dst
33    ldi r18, 6        ; count
34
35copy_loop:
36    ld r19, r16       ; load from src
37    st r17, r19       ; store to dst
38    
39    inc r16           ; next src
40    inc r17           ; next dst
41    dec r18           ; count--
42    
43    cpi r18, 0
44    brne copy_loop
45
46done:
47    jmp done

Demonstrates memory-to-memory data transfer.