Der AVR hat drei völlig getrennte Adressbereiche:
Codebereich (Flash),
Arbeitsspeicher (RAM) darin sind auch die Register untergebracht,
und EEPROM.

Es gibt also z.B eine Adresse 4 im Codebereich (Programm Memory),
und eine Adresse 4 im RAM.
Die haben nix miteinander zu tun.
Es existieren Befehle die sich explizit auf das RAM beziehen
(z.B. LD = Laden aus RAM),
und eigene Befehle, die sich nur auf den Codespeicher beziehen
(z.B LPM = Laden aus Program-Memory).
In die unteren Adressen des Rams sind die Register "eingeblendet".
Diese Adressen können wahlweise als Register oder als RAM
angesprochen werden.

Als zusätzliche Komplikation kommt noch dazu,
das der Codebereich mit 16-Bit Worten arbeitet,
d.h. unter der Adresse 4 sind 16 Bits = 2 Bytes zu finden.
Und das RAM arbeitet mit 8-Bit Worten, dort steht
unter Adresse 4 nur ein Byte.

Vieleicht wird es dir damit etwas klarer.
Ich musste mich auch erst daran gewöhnen,
ich komme von der Z-80 und 68000 Schiene....

Gruß Jan