Please enable JavaScript.
Coggle requires JavaScript to display documents.
4.3 Modos de direccionamiento. - Coggle Diagram
4.3 Modos de direccionamiento.
los modos de direccionamiento son formas de especificar cómo y dónde encontrar los operandos (datos) que se utilizarán en una operación.
Los operandos pueden estar almacenados en registros, memoria o directamente en las instrucciones. Diferentes microcontroladores pueden soportar varios modos de direccionamiento, que permiten flexibilidad y eficiencia en el acceso a los datos
Direccionamiento Inmediato
Descripción: El operando se especifica directamente en la instrucción. Esto significa que el valor del dato está incrustado en el código de la instrucción y no se busca en registros o memoria.
Ventaja: Es rápido, ya que el dato no necesita buscarse en memoria.
Ejemplo: En una instrucción como MOV A, #5, el valor 5 es el operando inmediato.
Uso común: Inicializar valores constantes.
Sintaxis común: MOV A, #dato, donde #dato es el valor inmediato.
Direccionamiento Directo (Absoluto)
Descripción: En este modo, la instrucción contiene la dirección de memoria en la que se encuentra el operando. Es decir, la ubicación del dato está directamente especificada en la instrucción.
Ventaja: Es sencillo y directo para acceder a datos almacenados en posiciones fijas de memoria.
Ejemplo: En un microcontrolador, una instrucción como MOV A, 30H movería el contenido de la dirección de memoria 30H al acumulador A.
Direccionamiento Indirecto
Descripción: En este modo, la instrucción especifica un registro que contiene la dirección de memoria donde se encuentra el operando. No se da la dirección de memoria directamente, sino que se usa un registro como puntero.
Ventaja: Permite mayor flexibilidad, ya que el registro que contiene la dirección puede cambiar durante la ejecución del programa, facilitando el manejo de arreglos y estructuras de datos dinámicos.
Ejemplo: Si R1 contiene la dirección 50H, una instrucción como MOV A,
R1
copiará el contenido de la dirección 50H en el acumulador A.
Uso común: Acceso a datos dinámicos o estructuras como arreglos.
Direccionamiento Indexado
Descripción: Combina un valor base de dirección (en un registro) con un desplazamiento o índice (que puede ser inmediato o en otro registro). Este modo es útil para acceder a elementos de arreglos o tablas.
Ventaja: Muy eficiente para manipular estructuras de datos como vectores y tablas, donde los elementos están almacenados consecutivamente en la memoria.
Ejemplo: Si R0 contiene una dirección base, y R1 es un índice, una instrucción como MOV A, [R0 + R1] accedería a la memoria en la dirección R0 + R1.
Direccionamiento Relativo
Descripción: En este modo, el operando es una dirección relativa a la ubicación actual del contador de programa (PC). Es decir, la dirección del operando se calcula sumando o restando un desplazamiento al valor del PC.
Ventaja: Muy útil para implementar saltos condicionales dentro de programas, ya que permite definir saltos hacia adelante o hacia atrás en el código.
Ejemplo: Una instrucción de salto condicional como JNZ LABEL (jump if not zero) usa direccionamiento relativo. Si el resultado de una operación es diferente de cero, se saltará a la etiqueta LABEL, que está a una distancia relativa del PC.
Uso común: Saltos y llamadas a subrutinas.
Direccionamiento Basado en Pila (Stack)
Descripción: Utiliza la pila del sistema como origen o destino de los datos. La pila es una estructura de datos donde los valores se apilan (push) y desapilan (pop) de manera secuencial.
Ventaja: Es útil para guardar temporalmente valores y direcciones de retorno durante llamadas a subrutinas o interrupciones.
Ejemplo: Instrucciones como PUSH (apilar) o POP (desapilar) trabajan directamente con la pila, usando el puntero de pila (SP - Stack Pointer) para localizar los datos.
Uso común: Almacenar direcciones de retorno y valores temporales durante subrutinas.
Direccionamiento de Registro
Descripción: En este modo, el operando está almacenado directamente en un registro del microcontrolador. El código de la instrucción especifica el registro que contiene el operando.
Ventaja: Acceso extremadamente rápido, ya que los registros están dentro del CPU y no es necesario acceder a la memoria.
Ejemplo: En una instrucción como MOV A, R1, el contenido del registro R1 se mueve al acumulador A.
Uso común: Operaciones rápidas entre registros del microcontrolador.
Direccionamiento Implícito
Descripción: En este caso, el operando no se especifica de manera explícita en la instrucción, sino que está implícito en el propio código de la instrucción. Este modo se utiliza para operaciones que siempre involucran los mismos registros.
Ventaja: Simplifica el código al no requerir operandos adicionales.
Ejemplo: Instrucciones como CLR A (limpiar el acumulador) o INC (incrementar un valor) no necesitan especificar un operando porque el destino está implícito.
Uso común: Operaciones estándar como limpiar, incrementar, o decrementar.