76. LPM – Load Program Memory
76.1. Description
Loads one byte pointed to by the Z-register into the destination register Rd. This instruction features a
100% space effective constant initialization or constant data fetch. The Program memory is organized in
16-bit words while the Z-pointer is a byte address. Thus, the least significant bit of the Z-pointer selects
either low byte (Z
LSB
= 0) or high byte (Z
LSB
= 1). This instruction can address the first 64KB (32K words)
of Program memory. The Z-pointer Register can either be left unchanged by the operation, or it can be
incremented. The incrementation does not apply to the RAMPZ Register.
Devices with Self-Programming capability can use the LPM instruction to read the Fuse and Lock bit
values. Refer to the device documentation for a detailed description.
The LPM instruction is not available in all devices. Refer to the device specific instruction set summary.
The result of these combinations is undefined:
LPM r30, Z+
LPM r31, Z+
Operation: Comment:
(i) R0 ← (Z) Z: Unchanged, R0 implied
destination register
(ii) Rd ← (Z) Z: Unchanged
(iii) Rd ← (Z) Z ← Z + 1 Z: Post incremented
Syntax: Operands: Program Counter:
(i) LPM None, R0 implied PC ← PC + 1
(ii) LPM Rd, Z 0 ≤ d ≤ 31 PC ← PC + 1
(iii) LPM Rd, Z+ 0 ≤ d ≤ 31 PC ← PC + 1
16-bit Opcode:
(i) 1001 0101 1100 1000
(ii) 1001 000d dddd 0100
(iii) 1001 000d dddd 0101
76.2. Status Register (SREG) and Boolean Formula
I T H S V N Z C
– – – – – – – –
Atmel AVR Instruction Set Manual [OTHER]
Atmel-0856L-AVR-Instruction-Set-Manual_Other-11/2016
118