Вы находитесь на странице: 1из 7

Facultad de Ingeniera de Sistemas,

Cmputo y Telecomunicaciones









Microprocesadores


Flix Armando Fermn Prez


1
Leccin 5
Modos de direccionamiento

Se requiere conocer los diversos modos de direccionamiento para desarrollar
eficientemente los programas a ejecutarse en el microprocesador. Los modos de
direccionamiento en general se basan en la manera de referenciar a los operadores
dentro de una instruccin. En la instruccin correspondiente a cada modo de
direccionamiento se puede encontrar el valor de la direccin del operando, o una
referencia a la direccin del operando. La versatilidad de las aplicaciones se basa
fuertemente en la manera en que se utilizan estos diversos modos de
direccionamiento.


5.1 Modos de direccionamiento.

Antes de proceder a conocer los modos de direccionamiento, Rodrguez (1988:43)
sugiere que es necesario saber cual el formato de una instruccin con los
operandos incluidos.:

[etiqueta] nombre_instruccin [operandos] [comentarios]


Por ejemplo si en la instruccin hay solo dos operandos sera as:

[etiqueta] nombre_instruccin [operando1] [operando2]


Empleando una instruccin como ejemplo:

INC : MOV AX, 00; inicializar registro AX con 00

etiqueta .......... : INC
nombre_instruccin . : MOV
operandos : AX y 200
comentario . : ; inicializar registro AX con 00

El campo etiqueta es el nombre simblico de la primera posicin de la instruccin
y pueden ser letras de la A hasta la Z, los nmeros del 0 al 9 y algunos caracteres
especiales. No se puede utilizar los smbolos AX, BX, CX, DX, etc., los que hacen
referencia a nombres de registros.

El campo nombre_instruccin es el nombre simblico de la instruccin, el
nemnico, de dos a seis letras.

Los campos operando1 y operando2 indican donde se encuentran los datos.
Puede haber 0, 1 o 2 operandos. El primer operando (operando 1) es denominado
destino y el segundo (operando2) es la fuente u origen.

El campo comentario debe necesariamente empezar con el smbolo ;

Los tipos de operandos de las instrucciones para el Intel 8086 pueden ser:
- registro, de 8 o 16 bits
- memoria, de 8 o 16 bits
- valor inmediato, de 8 o 16 bits.

2
En general, modo de direccionamiento es la manera como se tiene acceso a los
operandos de una instruccin y son de varios tipos. Para el Intel 8086, por ejemplo,
se incluyen los modos de direccionamiento por registro, inmediato, directo,
indirecto por registro, relativo y otros ms. (Stallings, 2000, p. 366)

Modo de direccionamiento inmediato: es la forma ms sencilla, en la instruccin
misma se halla el operando (ver Figura N 5.1). Este modo de direccionamiento
transfiere un byte o palabra inmediata al registro o posicin de memoria destino,
por ejemplo la instruccin MOV BH, F2H copia el byte F2H en el registro BH. Este
modo se utiliza para definir y utilizar constantes o para fijar valores iniciales de
variables.

Instruccin
Operando

Figura N 5.1 Modo de direccionamiento inmediato (Fuente: Stallings, 2000, p.366)


Modo de direccionamiento directo: cuando el campo de direcciones contiene la
direccin efectiva del operando. Mueve un byte o palabra entre una posicin de
memoria y un registro. Por ejemplo en MOV [27D4H], AX el contenido del registro
AX se transfiere a la posicin de memoria 27D4H. En la Figura N 5.2, A es el
contenido de un campo de direccin en la instruccin.

Instruccin
A

Memoria


Operando



Figura N 5.2 Modo de direccionamiento directo. (Fuente: Stallings, 2000, p.366)


Modo de direccionamiento por registro: similar al modo de direccionamiento
directo, solo que en este caso el registro destino es un registro y no una posicin de
memoria. Un ejemplo para el Intel 8086 es la siguiente instruccin MOV AX, BX. En
la Figura N 5.3, R es el contenido de un campo de direccin en la instruccin que
referencia un registro.

Instruccin
R


Operando


Registros

Figura N 5.3 Modo de direccionamiento por registro. (Fuente: Stallings, 2000, p.366)


3
Modo de direccionamiento indirecto: se referencia a una palabra de memoria que
contiene la direccin completa del operando, como el mostrado en la Figura N 5.4.

Instruccin
A

Memoria


Operando





Figura N 5.4 Modo de direccionamiento indirecto. (Fuente: Stallings, 2000, p.366)


Modo de direccionamiento indirecto por registro: se transfiere un byte o palabra
entre un registro y una posicin de memoria direccionada por un registro ndice o
un registro base, como se muestra en la Figura N 5.5. Ejemplo: MOV AX, [BX].

Instruccin
R
Memoria




Operando
Registros

Figura N 5.5 Direccionamiento indirecto por registro. (Fuente: Stallings, 2000, p.366)


Modos de direccionamiento con desplazamiento: requiere que las instrucciones
tengan dos campos de direcciones, al menos uno de ellos de manera explcita. La
direccin efectiva se genera agregando el valor directo tomado de uno de los
campos de direcciones al valor contenido en un registro referenciado por el cdigo
de operacin, tal como se observa en la Figura N 5.6. En general son de tres tipos:
- direccionamiento con desplazamiento relativo
- direccionamiento con registro base
- direccionamiento indexado

Instruccin
R A
Memoria




Operando
Registros

Figura N 5.6 Modo de direccionamiento con desplazamiento. (Fuente: Stallings,
2000, p.366)
4

Modo de direccionamiento por pila: Es del tipo de direccionamiento implcito, las
referencias a posiciones de la pila en memoria son direcciones de acceso indirecto
por registro (ver Figura N 5.7)

Instruccin

Implcita



Registro
cabecera de pila


Figura N 5.7 Modo de direccionamiento por pila. (Fuente: Stallings, 2000, p.366)


Segn Brey (2000:72), para el caso del microprocesador Intel 8086, se tienen los
siguientes modos de direccionamiento:

1.- INMEDIATO. El operando aparece especificado directamente en la instruccin.
Ejemplo: El operando fuente en MOV AX, FE43H

2.- POR REGISTRO. El operando es un registro.
Ejemplo: Los operandos en MOV BX, CX, son los registros BX y CX.

3.- DIRECTO ABSOLUTO A MEMORIA. El operando es una posicin o direccin de
memoria a la que se quiere acceder.
Ejemplo: El operando fuente en MOV AX, [FE43H].
El operando destino en MOV POS1, AX

4.- DIRECTO RELATIVO A UN REGISTRO BASE. El operando es una posicin o
direccin de memoria a la que se desea acceder, y se calcula mediante un registro
base. Este registro base ser el BX o el BP segn deseemos trabajar con el
segmento DS o SS respectivamente.
Ejemplo: El operando fuente en MOV AX, [BX + 5]
El operando destino en MOV [BP + 5], AX

5.- DIRECTO RELATIVO A UN REGISTRO INDICE. El operando es una direccin de
memoria a la que se desea acceder, y se calcula en base a un registro ndice. Este
registro ndice ser el SI o el DI.
Ejemplo: El operando fuente en MOV AX, [SI + 2]
El operando destino en MOV [DI + 2], AX
Si el desplazamiento no existe en los dos ltimos modos, hablamos de
direccionamiento indirecto por registro base o por registro ndice.

6.-RELATIVO A BASE MAS INDICE. El operando es una direccin de memoria a la
que se desea acceder, y se calcula en base a un registro base y un registro ndice.
Hay cuatro configuraciones posibles: el registro base puede ser el BX o el BP, y el
registro ndice puede ser el SI o el DI.
Ejemplo: El operando fuente en MOV AX, [BX + SI + 4]
El operando destino en MOV [BP + DI + 4], AX

Los tres ltimos modos de direccionamiento con desplazamiento pueden resumirse
en lo siguiente: [BX BP] + [SI DI] + [Desplazamiento]

5
Debe anotarse que, si en la instruccin est contenido el registro BP entonces el
registro de segmento por defecto es SS, en caso contrario es DS. Tambin los
modos de direccionamiento del 3 al 6 pueden estar precedidos de un registro de
segmento as: MOV AX, ES: [BX + SI + 2].

Rodrguez (1988:47) menciona que asociados a los registros de desplazamiento
(IP, SP, BP, BX, DI y SI) existen algunos segmentos por defecto, que no es
necesario declararlos. Pero si lo es cuando no coincide con el asignado por defecto.
En este caso, la instruccin incluye un byte adicional (a modo de prefijo) que indica
cul es el segmento referenciado. En la Figura N 5.8 se muestra un resumen:

CS DS SS ES
IP Aplica No aplica No aplica No aplica
BX Prefijo Por defecto Prefijo Prefijo
BP Prefijo Prefijo Por defecto Prefijo
SP No aplica No aplica Aplica No aplica
SI Prefijo Por defecto Prefijo Prefijo
DI Prefijo Por defecto Prefijo Por defecto
Figura N 5.8 Segmentos asociados por defecto. (Rodrguez, 1988, p.48)

5.2 Herramientas necesarias para los programas.
En el libro Lenguaje ensamblador para computadoras basadas en Intel, Irvine
(2003:77) menciona que para implementar los programas con las instrucciones del
microprocesador se hace necesario utilizar un lenguaje ensamblador, y contar con
algunas otras herramientas bsicas, como un editor para introducir el cdigo
fuente, un ensamblador propiamente dicho y un enlazador. Adems podran ser
necesarios mdulos con declaraciones de macros, estructuras de datos y funciones,
utilidades para generar archivos de recursos etc.; todo esto en concordancia con el
sistema operativo utilizado.

5.2.1 Editores.
Un editor, segn Irvine (2003:77), es lo que nos permite introducir el cdigo fuente
en un archivo, recuperarlo y, efectuar todas las tareas habituales de edicin, Se
puede emplear cualquier editor de texto sin formato, por ejemplo, el EDIT de DOS,
el Block de Notas del Windows o el conocido vi de Linux; o utilizar los editores
integrados en entornos de desarrollo. (Charte, 2003, p.24)

5.2.2 Ensambladores.
Luego de creados los archivos de texto conteniendo el cdigo fuente de los
programas, es necesario utilizar un ensamblador, es decir la herramienta que
traduce ese cdigo fuente al lenguaje de mquina. En general un ensamblador es
como un compilador de cualquier lenguaje: toma un archivo de texto con cdigo
fuente como la entrada y luego genera un nuevo archivo con estas mismas
sentencias o instrucciones pero en el lenguaje del microprocesador utilizado.
(Irvine, 2003, p.77)

En el mercado existen una gran cantidad de ensambladores para la familia x86, los
ms conocidos son el MASM desarrollado por Microsoft para los entornos DOS y
Windows y que se puede invocar desde la lnea de comando del sistema operativo;
y el NASM para Linux, de libre disponibilidad en la web y se puede utilizar mltiples
plataformas como DOS, Windows y Linux. (Charte, 2003, p. 30)

5.2.3 Enlazadores.
Los enlazadores actan como traductores del cdigo fuente al cdigo objeto, toman
el cdigo fuente y para cada sentencia del programa, generan una secuencia de
bytes que constituyen el cdigo objeto. Todas estas secuencias de bytes, una por
instruccin se almacenan en un archivo que no es ejecutable directamente ya que
6
le falta aun informacin para que el sistema operativo pueda gestionarlo
adecuadamente. (Irvine, 2003, p.77)

As, un archivo ejecutable debe tener uno o ms encabezados con informacin para
el sistema operativo, en los que se especifica el tipo de ejecutable, la cantidad de
memoria necesaria, los datos, etc. La herramienta que hace todo esto es conocido
como enlazador y en general cada ensamblador cuenta con su propio enlazador,
por ejemplo si utiliza MASM debe utilizar el enlazador LINK, y en entorno Linux, si
se emplea el ensamblador NASM, el enlazador es el ALINK. (Charte, 2003, p. 34)

5.2.4 Depuradores.
En el proceso de depuracin de un programa es una fase importante en el
desarrollo de cualquier programa, en especial en los programas en lenguaje
ensamblador ya que las operaciones son de muy bajo nivel y cualquier fallo puede
provocar un funcionamiento errneo o el bloqueo del sistema, inclusive.

El ms conocido es el DEBUG del DOS, que es una herramienta de lnea de
comando en modo texto. Mediante comandos de un solo carcter, es posible
desensamblar un conjunto de instrucciones para conseguir su versin en
ensamblador, ver el contenido de la memoria, los registros generales y otros, as
como ejecutar las instrucciones paso a paso, por ejemplo. (Charte, 2003, p.35)

Вам также может понравиться