This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:multiasm:piot:chapter_4_5 [2026/03/01 19:38] – [Relative Program Memory Addressing] ktokarz | en:multiasm:piot:chapter_4_5 [2026/03/01 19:43] (current) – [Addressing Modes] ktokarz | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Addressing Modes ====== | ====== Addressing Modes ====== | ||
| - | Addressing modes define how the processor accesses data. There are 15 different addressing modes, such as: Direct Addressing, Indirect Addressing, Indirect with Displacement, | + | Addressing modes define how the processor accesses data and the target address of a jump. There are more than a dozen different addressing modes, such as: Direct Addressing, Indirect Addressing, Indirect with Displacement, |
| - | + | ||
| - | Details on addressing | + | |
| =====Direct Single Register Addressing===== | =====Direct Single Register Addressing===== | ||
| Line 57: | Line 55: | ||
| =====Data Indirect Addressing===== | =====Data Indirect Addressing===== | ||
| - | Indirect addressing uses the content of an index register as a pointer to memory. As shown in Fig {{ref> | + | Indirect addressing uses the content of an index register as a pointer to memory. As shown in Fig {{ref> |
| An example of the instruction is load data from memory addressed with an X pointer. | An example of the instruction is load data from memory addressed with an X pointer. | ||
| <code asm> | <code asm> | ||
| Line 106: | Line 104: | ||
| =====Program Memory Constant Addressing===== | =====Program Memory Constant Addressing===== | ||
| - | With this addressing mode, it is possible to read the byte from the program memory. As shown in Fig {{ref> | + | With this addressing mode, it is possible to read the byte from the program memory. As shown in Fig {{ref> |
| The upper 15 bits (Most Significant bits - MSbs) select the word address (each word contains 2 bytes). | The upper 15 bits (Most Significant bits - MSbs) select the word address (each word contains 2 bytes). | ||
| Line 188: | Line 186: | ||
| =====Extended Indirect Program Memory Addressing===== | =====Extended Indirect Program Memory Addressing===== | ||
| - | For versions of AVR microcontrollers with bigger program memory than 128 kB, additional bits used to extend the address are stored in the EIND register. Program execution continues at the address contained by the Z-register and the EIND-register (i.e., the PC is loaded with the contents of the EIND and Z-register) as shown in fig {{ref> | + | For versions of AVR microcontrollers with bigger program memory than 128 kB, additional bits used to extend the address are stored in the EIND register. Program execution continues at the address contained by the Z register and the EIND register (i.e., the PC is loaded with the contents of the EIND and Z register) as shown in fig {{ref> |
| <figure avr_addr_14> | <figure avr_addr_14> | ||