Sei sulla pagina 1di 10

Modos de Direccionamiento

Luis Caballero Sierra.


Febrero 2018.

Universidad del Sinú.


Escuela de Ingeniería de Sistemas.
Microcontroladores
1

Introducción

Se entiende por direccionamiento la forma en que se interpretan los bits de un

campo de dirección de una instrucción para localizar el operando y/o la dirección destino

del resultado de la instrucción. En este documento se explicaran algunos de los modos

principales de direccionamiento que se pueden localizar en un ordenador.


2

Modos de direccionamiento

Un modo de direccionamiento permite determinar un operando, o la ubicación de

un operando en una instrucción. Estos operandos pueden residir en diversas partes:

 La propia instrucción

 Memoria principal

 Registros internos de la CPU

Directo a registro

En este modo de direccionamiento, el operando se encuentra en un registro. En la

instrucción simplemente se debe codificar en qué registro se encuentra el operando. Este

modo de direccionamiento se utiliza en la mayor parte de instrucciones, tanto de acceso a

memoria, como de procesamiento de datos, para algunos o todos sus operandos. Se

utiliza, por ejemplo, la instrucción add rd, rs, rn suma el contenido de los registros rs y

rn y escribe el resultado en el registro rd. Por lo tanto, la anterior instrucción utiliza el

modo de direccionamiento directo a registro para especificar tanto sus dos operandos

fuente, como para indicar dónde guardar el resultado.


3

Formato de instrucción usado por las instrucciones add rd, rs, rn.

Relativo a registro con desplazamiento

La dirección efectiva del operando es una dirección de memoria que se obtiene

sumando el contenido de un registro y un desplazamiento especificado en la propia

instrucción. Por tanto, si un operando utiliza este modo de direccionamiento, el formato

de instrucción deberá proporcionar dos campos para dicho operando: uno para especificar

el registro y otro para el desplazamiento inmediato. La instrucción, ldr rd, [rb,

#Offset5], realiza la operación rd ← [rb + Offset5], por lo que consta de dos operandos.

Uno es el operando destino, que es el registro rd. El modo de direccionamiento utilizado

para dicho operando es el directo a registro. El otro operando es el operando fuente, que

se encuentra en la posición de memoria cuya dirección se calcula sumando el contenido

de un registro rb y un desplazamiento inmediato, Offset8. El modo de direccionamiento

utilizado para dicho operando es el relativo a registro con desplazamiento.


4

Formato de instrucción con direccionamiento relativo a registro con

desplazamiento utilizado por las instrucciones ldr rd, [rb, #Offset5]

Relativo a registro con registro de desplazamiento

La dirección efectiva del operando es una dirección de memoria que se obtiene

sumando el contenido de dos registros. Por tanto, si un operando utiliza este modo de

direccionamiento, el formato de instrucción deberá proporcionar dos campos para dicho

operando: uno para cada registro. Como se puede ver, es muy similar al relativo a registro

con desplazamiento. La diferencia radica en que el desplazamiento se obtiene de un

registro en lugar de un dato inmediato. Una instrucción de carga que utilizan este modo

de direccionamiento es ldr rd, [rb, ro]. Carga en el registro rd el contenido de la palabra

de memoria indicada por la suma de los registros rb y ro.


5

Formato de instrucción usado para codificar la instrucción ldr que utiliza el modo

de direccionamiento relativo a registro con registro de desplazamiento.

Autoincremental

En este modo, la dirección del operando se encuentra en un registro y éste es

incrementado, después de acceder al operando, en el tamaño del mismo. Este modo es

útil para manejar vectores y matrices como se veía en el apartado anterior. También se

puede utilizar para extraer datos de pilas (que crezcan hacia direcciones bajas) ya que, si

el registro sobre el que se aplica este modo es el apuntador de pila, después de la

operación el apuntador señalará al siguiente elemento de la pila.


6

Autodecremental

En este modo para obtener la dirección del operando hay que decrementar un

registro en el tamaño del operando; el nuevo contenido del registro después de efectuar

esa operación, es la dirección del operando. Este método contempla al anterior y se

emplea para direccionar elementos de vectores y matices en orden descendente y también

para introducir datos en las pilas ya que si se aplica este método sobre el apuntador de la

pila, conseguiremos que antes de efectuar el acceso al apuntador señale al siguiente hueco

libre de la pila.

Relativo a PC y de registro base

Estos dos tipos de direccionamiento comparten la forma de calcular la dirección

del operando o donde se deja el resultado. El formato de instrucción general este tipo de

instrucciones es:
7

Donde:

 El campo de dirección 1 siempre aparece y su contenido es una cantidad,

generalmente representada en complemento a dos, y que se denomina

desplazamiento.

 El campo de dirección 2 es optativo, es decir, no siempre aparece.

Depende del tipo de direccionamiento y del número de registros de cada

tipo que existan. Si aparece especifica un registro, es decir, es una

dirección de registro, cuyo contenido se usará como veremos a

continuación.

Direccionamiento relativo a PC: El registro cuyo contenido se suma al

desplazamiento es el PC. El PC (Program Counter o Contador de Programa) es un

registro especial de la CPU cuya función es contener en todo momento la dirección de

memoria central donde se encuentra la siguiente instrucción a ejecutar. Como el registro

PC es único, en este tipo de direccionamiento no existe el campo de dirección 2.

Direccionamiento de registro base: En este caso, el registro cuyo contenido se

suma al desplazamiento se denomina registro base. Si en una máquina sólo existe un

único registro base, no será necesario el campo de dirección 2. Sin embargo, si existe más

de uno, habrá que incluir ese campo en la instrucción y su contenido será la identificación

del registro base cuyo contenido será sumado al desplazamiento.


8

Paginado

En el paginado la memoria se encuentra actualmente dividida en páginas (bloques de

igual longitud). Para obtener las direcciones se necesita:

 Indicador de página (IP): en un registro específico o de propósito general de la

máquina.

 Dirección de la palabra (DP): en el campo CD de la instrucción.

Así, concatenando ambas partes se obtiene la dirección completa.


9

Lista de referencias

García Breijo, E. (n.d.). Compilador C CCS y simulador PROTEUS para


microcontroladores PIC.

Gilson, A. (2018). Manual del Zilog Z80. Academia.edu. URL:


http://www.academia.edu/11061083/Manual_del_Zilog_Z80.

Potrebbero piacerti anche