Instructions are one 16-bit long word, save for those including a 16-bit or 22-bit address, which take two words. There are two types of conditional branches: jumps to address and skips. Conditional branches (BRxx) can test an ALU flag and jump to specified address. Skips (SBxx) test an arbitrary bit in a register or I/O and skip the next instruction if the test was true. In the following: Rd and Rr are registers in the range R0–R31 Rdh and Rrh are registers in the range R16–R31 (high half) Rdq and Rrq are registers in the range R16–R23 (one quarter of the register file) Rp is a register pair R25:R24, R27:R26 (X), R29:R28 (Y) or R31:R30 (Z) XYZ is a pointer register, either X or Y or Z YZ is a pointer register, either Y or Z s is a bit number in the status register (0 = C, 1 = Z, etc., see the list above) b is a bit number in a general-purpose or I/O register (0 = least significant, 7 = most significant) K6 is a 6-bit immediate unsigned constant (range: 0–63) K8 is an 8-bit immediate constant; since it is used only in 8-bit operations, its signedness is irrelevant IO5 is a 5-bit I/O address covering the bit-addressable part of the I/O address space, i.e. the lower half (range: 0–31) IO6 is a 6-bit I/O address covering the full I/O address space (range: 0–63) D16 is a 16-bit data address covering 64 KiB; in parts with more than 64 KiB data space, the contents of the RAMPD segment register is prepended P22 is a 22-bit program address covering 222 16-bit words (i.e. 8 MiB) S7 and S12 are 7-bit (resp. 12-bit) signed displacements, in units of words, relative to the program address stored in the program counter Instruction set inheritance Not all instructions are implemented in all Atmel AVR controllers. This is the case of the instructions performing multiplications, extended loads/jumps/calls, long jumps, and power control. The optional instructions may be grouped into three categories: core cpu (computation) features, added on more capable CPU cores memory addressing features, added on all models with memory large enough to require them optional features, a few peripherals that may or may not be present on a particular model. While higher-end processors tend to have both more capable cores and more memory, the presence of one does not guarantee the presence