Jméno

LPM — Load Program Memory

Přehled

LPM

LPM Rd,Z

LPM Rd,Z+

První parametr funkce je jeden z 30 registrů procesoru. (0≤Rd≤29). Pro registry R30 a R31, není chování instrukce definováno.

Popis

LPM je jediná instrukce, která nám umožňuje číst obsah paměti programu. Funguje tak, že do registru R0 nebo Rd načte jeden bajt z Flash paměti programu, bajt na který ukazuje registr Z.

Je nutné připomenout, že paměť programu je organizována po 16-ti bitových slovech. Instrukce LPM ji však čte po bajtech. Registr Z tedy dokáže adresovat prvních 64kB paměti programu, což je prvních 32kW. Pokud procesor obsahuje registr RAMPZ, jsou jeho bity součástí adresy před bity registru Z. Dokážeme tak adresovat 224 bajtů tedy 223 slov paměti programu.

Varování

Varianta instrukce LPM Rd,Z+ při přetečení Z nezvyšuje RAMPZ.

Bajty ve slově jsou adresovány od nižšího, jak je vidět v následující tabulce.

ZPC
00 LO Byte
10 HI Byte
21 LO Byte
31 HI Byte

Ukázky

        ldi ZH, high(CodeTable >> 1)  ; Initialize Z-pointer
        ldi ZL, low(CodeTable >> 1)   ;+
        lpm r16, Z                    ; Load from program memory
        …

CodeTable:
        .dw 0x4281, 0x4316, 0x45a9

Odkazy

Související instrukce: FIXME:avr.isa.nop;.

  • 8-bit AVR Instruction Set Rev. 0856I-AVR-07/10, strana 97
Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .