Home MundoTec Software Código fuente Tutorial / pdf Minijuegos
Cerrar

Tutorial Microcontroladores

Tutorial Microcontroladores.







Microcontroladores

Modo de Direccionamiento Relativo

El modo de direccionamiento relativo es usado solamente por las instrucciones de bifurcación (saltos condicionados). Las instrucciones de bifurcación, salvo las bifurcaciones en su versión de manipulación de bits generan dos bytes de código de máquina: uno para el código de operación y otro para el desplazamiento relativo. Ya que es deseable bifurcar en cualquier sentido, el byte de desplazamiento es un número signado según el convenio de complemento a dos con un rango que va desde -128 hasta +127 bytes (respecto a la dirección de la instrucción inmediata posterior a la instrucción de bifurcación). Si la condición de salto es verdad, el contenido de los 8 bits del byte con signo siguiente al código de operación (desplazamiento) es sumado al contenido del contador de programa para formar la dirección de bifurcación efectiva; de otro modo, el control continúa bajo la instrucción inmediata posterior a la instrucción de bifurcación.

Un programador especifica el destino de una bifurcación como una dirección absoluta (o rótulo que hace referencia a una dirección absoluta). El ensamblador calcula el desplazamiento relativo de 8 bits con signo, que es colocado en memoria luego del código de operación de la bifurcación.

Listado del Programa de Ejemplo:

0300 27 rr BEQ DEST ; Bifurcar a DEST si Z = 1 (si es igual o cero)

Secuencia de Ejecución:

$0300 $27 [1]
$0301 $ [2] y [3]

Explicación:

[1] La CPU lee el código de operación $27 - Bifurcar si Z = 1. El bit Z del registro de código de condición será uno si el resultad de la operación aritmética o lógica previa fue cero.

[2] La CPU lee $rr de la posición de memoria $0301. Este $rr es interpretado como el valor de desplazamiento relativo. Después de este ciclo el contador de programa apunta al primer byte de la próxima instrucción ($0302).

[3] Si el bit Z está en cero, nada sucede en este ciclo y el programa debe continuar con la próxima instrucción. Si el bit Z está en uno, la CPU armará la dirección completa sumando el desplazamiento signado antes leído ($rr) al contenido del registro contador de programa para obtener la dirección destino de la bifurcación. Esto provoca que la ejecución del programa continúe desde una nueva dirección (DEST).

La tabla 5-7 incluye una lista de todas las instrucciones del MC68HC05 que pueden usar el modo de direccionamiento relativo.

Microcontroladores

Tabla 5-7 – Instrucciones con Modo de Direccionamiento Relativo Instrucciones de Evaluación de bits y de Bifurcación Estas instrucciones usan modo de direccionamiento directo para especificar la posición de memoria a evaluar y direccionamiento relativo para especificar la dirección destino de la bifurcación. Este texto trata a estas instrucciones como de direccionamiento directo. En documentación antigua de Motorola se denomina al modo de direccionamiento de estas instrucciones BTB como "bit test and branch". Instrucciones Ordenadas por su Tipo Las tablas 5-8 a 5-11 incluyen las listas de todo el repertorio de las instrucciones del MC68HC05 agrupadas por su tipo.
Microcontroladores

Tabla 5-8 – Instrucciones de Registros / Memoria.
Microcontroladores

Tabla 5-9 – Instrucciones Lectura / Modificación / Escritura.
Microcontroladores

Tabla 5-10 – Instrucciones de Salto.
Microcontroladores

Tabla 5-11 – Instrucciones de Control Sumario del Repertorio de Instrucciones Las computadoras usan códigos de operación u opcodes para darle instrucciones a la CPU. El repertorio de instrucciones para una CPU específica es el conjunto de todas las operaciones que la CPU sabe cómo realizar. La CPU en un MC68HC705J1A puede reconocer 62 instrucciones básicas, algunas con diversas variaciones que requieren códigos de operación separados. Del repertorio de instrucciones del MC68HC05 están representados sólo 210 códigos de operación de instrucción.
Microcontroladores

La tabla 5-12 incluye una lista de todas las instrucciones del MC68HC05 en orden alfabético. Símbolos de Código de Condición
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (1- de 6).
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (2 - de 6).
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (3 - de 6).
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (4 - de 6).
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (5 - de 6).
Microcontroladores

Tabla 5-12 – Sumario de Instrucciones (6 - de 6).

Revisión del Capítulo 5

Registros de la CPU

Los cinco registros de la CPU del MC68HC05 no son posiciones de memoria pertenecientes al mapa de memoria. El modelo de programación de la CPU presenta los cinco registros de la CPU.
  • El acumulador (A) es un registro de 8 bits de propósitos generales.
  • El registro índice (X) es un registro puntero de 8 bits.
  • El puntero a la pila (SP) es un registro puntero que es decrementado automáticamente al ingresar un dato a la pila y es incrementado al retirar un dato de la pila.
  • El contador de programa (PC) tiene tantos bits como líneas el bus de direcciones. El contador de programa siempre apunta a la próxima instrucción o porción de dato que la CPU usará.
  • El registro de código de condición (CCR) contiene cuatro banderas de resultados aritméticos H, N, Z y C y un bit de control I de la máscara de interrupción.
Modos de Direccionamiento

La CPU del MC68HC05 posee seis modos de direccionamiento que determinan cómo la CPU obtendrá el / los operando / s para completar cada instrucción. La CPU del MC68HC05 tiene sólo 62 mnemónicos de instrucción. Hay 210 códigos de operación debido a que por cada variación de modos de direccionamiento que una instrucción puede tener debe haber un único código de operación.
  • En modo de direccionamiento inmediato, el operando para la instrucción es el byte inmediato siguiente al código de operación.
  • En modo de direccionamiento inherente, la CPU no necesita más operandos de memoria. Los operandos, si los hay, son registros internos o datos almacenados en la pila.
  • En modo de direccionamiento extendido, la dirección de 16 bits del operando se coloca en los dos bytes siguientes al código de operación de la instrucción.
  • En modo de direccionamiento directo, los 8 bits de menor peso de la dirección del operando se colocan en el byte siguiente al código de operación de la instrucción y el byte de mayor peso de la dirección se asume que es $00. Este modo es más eficiente que el extendido ya que el byte de mayor orden está implícitamente incluido en el programa.
  • En modo de direccionamiento indexado, el valor actual del registro índice es sumado a un desplazamiento de 0, 1 ó 2 bytes que vienen en las 0, 1 ó 2 posiciones de memoria siguientes al código de operación, para formar la dirección del operando en memoria.
  • En modo de direccionamiento relativo, es sumado para instrucciones de bifurcación condicional. El byte siguiente al código de operación es un valor de desplazamiento de 8 bits con signo entre -128 y +127. Si la condición de bifurcación es verdad, el desplazamiento es sumado al valor del contador de programa para obtener la dirección donde la CPU buscará la próxima instrucción del programa.
Ejecución de Instrucciones

Cada código de operación le dice a la CPU la operación a realizar y el modo de direccionamiento a usar para acceder a cualquier operando necesario para completar la instrucción. La explicación ciclo a ciclo de las instrucciones de ejemplo de cada modo de direccionamiento proporcionan una visión de las pequeñas simples etapas que lleva a cabo una instrucción.