El documento describe los diferentes modos de direccionamiento del microcontrolador ATMEGA328P. Estos incluyen direccionamiento directo de registros individuales y pares de registros, direccionamiento directo de I/O, direccionamiento directo y indirecto de datos con y sin desplazamiento, y direccionamiento directo, indirecto y relativo de programas.
2. Direccionamiento directo de registro único
El operando está contenido en el registro d (Rd). El resultado de la operación se almacena
en el mismo registro.
Ejemplo: INC R1; Operación: R1 <- R1 + 1
3. Direccionamiento directo de registros con dos
registros
Los operandos están contenidos en los registros r (Rr) y d (Rd). El resultado se almacena en
el registro r (Rr).
Ejemplo: ADD R0, R1; Operación: R0 <- R0 + R1
4. Direccionamiento directo I/O
Se lee directamente datos de los registros I/O a los regitros de uso general, y se escribe directamente de
los registros de uso general a los registros I/O.
Ejemplo: IN R25, 16; Operación: R25 <- I/O(16)
5. Direccionamiento directo de datos
Una dirección de datos de 16 bits está contenida en los 16 bits menos significativos de una instrucción de
2 palabras de longitud. Rr/Rd especifica el registro de origen o destino.
Ejemplo: LDS R8, 0x100; Operación: R8 <- (0x100)
6. Direccionamiento indirecto de datos
La dirección es el contenido del registro X, Y o Z
Ejemplo: LD R0, X; Operación: R0 <- (X)
7. Direccionamiento indirecto de datos con pre-decremento
El registro X, Y o Z es decrementado antes de realizar la operación. La dirección del operando es el
contenido decrementado de X, Y o Z.
Ejemplo: LD R0, -X; Operación: R0 <- (X) X-1
8. Direccionamiento indirecto de datos con post-incremento
El registro X, Y o Z es incrementado después de realizar la operación. La dirección del operando es el
contenido incrementado de X, Y o Z.
Ejemplo: LD R0, Z+; Operación: R0 <- (Z) Z+1
9. Direccionamiento indirecto con desplazamiento
La dirección es el contenido del registro X, Y o Z, al la que se le suma la dirección contenida en q (6 bits)
Ejemplo: LDD R0, Y+5; Operación: R0 <- (Y+5)
10. Direccionamiento directo de programa (JMP y CALL)
La ejecución del programa continúa en la dirección mediata contenida en la palabra de instrucción.
11. Direccionamiento indirecto de programa (IJMP y ICALL)
La ejecución del programa continúa en la dirección mediata contenida en el registro Z.
La instrucción no admite ningún operando.
Ejemplo: IJMP; Operación: PC(15:0) <- Z(15:0)
12. Direccionamiento relativo de programa (RJMP y RCALL)
La ejecución del programa continúa a partir de la dirección PC + k + 1. La dirección relativa k es de –2048 a
2047.