Está en la página 1de 4

Modos De Direccionamiento

0 1 5 6 11 12 15
1 OP AM reg Patrón 1

Los modos de direccionamiento permiten que la data almacenada en la memoria pueda ser accedida
de manera conveniente y eficiente de tal forma que permita la realización de algoritmos con menos
instrucciones y que se ejecuten mas rápido. El microprocesador provee de dos registros que están
estrechamente relacionados con los modos de direccionamiento:
Puntero X (IX) de 16bits.
Puntero Y (IY) de 16bits.
Estos registros llamados indicador X e indicador Y pueden ser especificados como punteros de datos
en los modos de direccionamiento indexado, indirecto indexado e indirecto indexado con pre o post
modificación.
Según el modo de direccionamiento se obtiene la sección de la dirección que corresponde a los 16
bits menos significativos. Los ocho bits mas significativos son proporcionados por el puntero de
página correspondiente, el puntero mas usado para este propósito es el de la página de datos, en
menor grado se utilizan el de la página de pila y el de la página de programa estos dos últimos
usualmente son usados de manera transparente para el programa.
Puntero de Páginas:
HSP[8] = Página de la pila.
HPC[8] = Página del programa.
HDS[8] = Página de datos.
La tabla presenta el detalle de los modos de direccionamiento

IR[6:11] modo de direcc. Mnemónico Descripción


000xxx inmediato DATO = #ADDR Inmediato
001xxx directo DATO = ADDR Directo
010000 indexado X DATO = ADDR,X Indexado por X
010001 indexado X+ DATO = ADDR,X+ Indexado por X con post-incremento.
010101 indexado +X DATO = ADDR,+X Indexado por X con pre-incremento.
010011 indexado X- DATO = ADDR,X- Indexado por X con post-decremento.
010111 indexado -X DATO = ADDR,-X Indexado por X con pre-decremento.
011000 indexado Y DATO = ADDR,Y Indexado por Y.
011001 indexado Y+ DATO = ADDR,Y+ Indexado por Y con post-incremento.
011101 indexado +Y DATO = ADDR,+Y Indexado por Y con pre-incremento.
011011 indexado Y- DATO = ADDR,Y- Indexado por y con post-decremento.
011111 indexado -Y DATO = ADDR,-Y Indexado por Y con pre-decremento.
100xxx indirecto DATO = (ADDR) Indirecto.
110000 indirecto indexado X DATO = (ADDR),X Indirecto indexado por X.
110001 indirecto indexado X+ DATO = (ADDR),X+ Indirecto indexado por X con post-incremento.
110101 indirecto indexado +X DATO = (ADDR),+X Indirecto indexado por X con pre-incremento.
110011 indirecto indexado X- DATO = (ADDR),X- Indirecto indexado por X con post-decremento.
110111 indirecto indexado -X DATO = (ADDR),-X Indirecto indexado por X con pre-decremento.
111000 indirecto indexado Y DATO = (ADDR),Y Indirecto indexado por Y.
111001 indirecto indexado Y+ DATO = (ADDR),Y+ Indirecto indexado por Y con post-incremento.
111101 indirecto indexado +Y DATO = (ADDR),+Y Indirecto indexado por Y con pre-incremento.
111011 indirecto indexado Y- DATO = (ADDR),Y- Indirecto indexado por Y con post-decremento.
111111 indirecto indexado -Y DATO = (ADDR),-Y Indirecto indexado por Y con pre-decremento.
Modo de Direccionamiento inmediato
Este modo se señaliza usando el símbolo de # antecediendo al DATO: “LD AR #3045”; este modo
provee una manera conveniente de utilizar un dato que permanece constante durante la ejecución
del programa ya que una vez que se compila la instrucción con este modo la misma no se modifica
por consiguiente no se puede cambiar el dato.
Ejemplos:
LD AR #3045 ; Siempre que se ejecute esta instrucción el contenido de AR será 3045
ADD AR #10AB ; Siempre que se ejecute esta instrucción al contenido de AR se le suma
; 10AB. Si estas dos instrucciones se ejecutan secuencialmente el contenido
; de AR será 40F0.
El modo de direccionamiento inmediato solo puede especificar un parámetro de 16 bits y no se
permite para las instrucciones ST, NOT, NEG, INC, DEC, XCHG ni para las instrucciones de rotación y
traslación ya que estas instrucciones requieren que el DATO sea variable.

Modo de Direccionamiento Directo


Este modo se usa para especificar en la instrucción la dirección del dato. En la mayoría de los
algoritmos se utiliza este modo de direccionamiento para especificar variables, para indicar este
modo de direccionamiento la instrucción simplemente señala la dirección sin hacer uso de ningún
símbolo adicional: “LD AR 3045" así la variable utilizada se supone está almacenada en la dirección
3045.
Ejemplos:
003045 F020
1. LD AR 3045 ; Después de ejecutarse el registro AR contiene F020
; siempre y cuando el registro HDS contenga 00. 0F20
2. ST AR 3049 ; Después de ejecutarse el registro AR contiene F020 F001
; y el dato en la dirección 003049 deja de ser 0FF0 y
; pasa a ser F020. 3F4E
XCHG AR 3047 ; Después de ejecutarse el registro AR contiene F001 y 0FF0
; el dato en la dirección 003047 pasa a ser F020.

En un compilador que traduzca Assembler a código de máquina permite la incorporación de símbolos


y así una variable puede ser especificada en el modo directo usando un nombre representativo, por
ejemplo suponga que la variable en la dirección 3045 almacena la amplitud de una portadora, en tal
caso pudiese asignársele el símbolo CARRIER1_Vmax el cual es mas indicativo de la función que tiene
la variable que 3045.

Modo de Direccionamiento Indexado


El indexado es invocado usando uno de los registros indicadores como parte de la dirección: “LD AR 3045,X”
este modo de direccionamiento es similar al directo con la diferencia de que el registro indicador que se
especifica se suma a la dirección para obtener la ubicación efectiva de la variable, si por ejemplo el registro
IX almacena el valor 0003, el dato será leído de la dirección 003048 ya que a DATO se suma IX para obtener
la dirección de la variable, así AR queda con el valor 3F4E si la condición de la memoria fuese la ilustrada
arriba.
Ejemplos:
1. LD AR 3045,X ; Si IX = 0004, después de ejecutarse el registro AR
003045 F020
; contiene 0FF0 siempre y cuando el registro HDS
; contenga 00. 0F20
2. ST AR 3049,Y ; si IY = FFFC, el registro AR contiene F020 ya que F001
; IY = -4
El indexado el modo indexado permite indicar operaciones de pre o post 3F4E
modificación del registro puntero utilizado si se escribe “+” la modificación 0FF0
será de incremento si se escribe “–“ la modificación será decremento, en caso
de que el signo de modificación se escriba antes del indicador entonces la
modificación será previa a la ejecución de la instrucción: “LD AC 3045,+X”
incrementa el registro X antes de indexar el valor 3045; “LD AC 3045,-X” decrementa el registro X antes
de indexar el valor 3045, en caso de que el signo modificador se escriba después del indicador entonces
la modificación de este será realizada posterior a la indexación: “LD AC 3045,X+”realiza la indexación del
valor 3045 y luego incrementa el indicador; “LD AC 3045,X-” realiza la indexación del valor 3045 y luego
decrementa el indicador.
Ejemplos:
1. LD AR 3045,-X ; Si IX = 0004, después de ejecutarse el registro AR queda con 3F4E siempre y cuando
; el registro HDS contenga “00", IX será igual a 0003.
2. ST AR 3049,Y+ ; si IY = FFFC, el registro AR contiene F020 y el registro IY queda con FFFD (-3)

Modo de Direccionamiento Indirecto


Se representa en la instrucción encerrando la dirección entre paréntesis:
LD AR (3045).
Este modo señala que la dirección del dato debe ubicarse en la dirección que especifica la instrucción. en
este caso la dirección del dato sería 00F020 de acuerdo con el mapa de memoria que se presenta en la
figura de arriba.
Ejemplos:
Suponga que se ejecutan las instrucciones en forma secuencial basado 00010A 3048
en el mapa de memoria que se presenta en las figuras mostradas . 3500
Determine el contenido final en el registro AR.
1. LD AR (010A) ; FE20
2. ADD AR (011E) ; 404E

Después de la instrucción 3045


Antes de la instrucción

1. AR = XXXX CF = X AR = 3F4E CF = X

2. AR = 3F4E CF = X AR = 2F6E CF = 1

Modo de Direccionamiento Indirecto Indexado


Se representa en la instrucción encerrando la dirección entre paréntesis y agregándole el índice
respectivo que puede ser IX o IY, ejemplo de indirecto indexado que usa IY:
LD AR (3045),Y.
Este modo señala que la dirección del dato debe ubicarse en la dirección que ordena la instrucción pero
a esta dirección se le debe sumar el contenido del índice señalado.
Ejemplos:
Basado en el mapa de memoria que se presenta. Determine el contenido 00010A 3048
final en el registro AR suponga que las instrucciones se ejecutan en 3500
secuencia y que IX = 0004.
1. LD AR (010A) ; FE20
2. ADD AR (011E),X ; 404E
3045
Antes de la instrucción Después de la instrucción

1. AR = XXXX CF = X AR = 3F4E CF = X

2. AR = 3F4E CF = X AR = 4F3E CF = 0 003045 F020


0F20
Modo de Direccionamiento Indirecto Indexado con modificación F001
de índice.
3F4E
El direccionamiento indirecto se hace igual al modo anterior, no obstante
según lo indique la instrucción el índice se modifica ya sea antes de hacer el 0FF0
indexado (pre modificado) o después de hacer el indexado (post modificado).
Ejemplo:
LD AR (010A),-Y ; La dirección del dato es 3048 + (IY-1); IY = IY-1.
LD AC (011E),Y+ ; La dirección del dato será 3045 + IY; IY = IY+1.
En el primer caso la instrucción ordena un indirecto indexado con pre disminución del índice o sea, primero
se le resta 1 al índice y luego se indexa el indirecto.
En el segundo caso la instrucción ordena un indirecto indexado con post aumento del índice o sea, primero
se indexa el indirecto y luego se le suma 1 al índice.

También podría gustarte