Está en la página 1de 7

1.

6 MODOS DE DIRECCIONAMIENTO
Los llamados modos de direccionamiento son las diferentes maneras de especificar en informtica un
operando dentro de una instruccin en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un
operando mediante el uso de la informacin contenida en registros y / o constantes, contenida dentro
de una instruccin de la mquina o en otra parte.
Las operaciones se hacen entre registros o registros y memoria, pero nunca entre memoria y memoria
(salvo algunas operaciones con cadenas de caracteres). Los modos de direccionamiento determinan
el lugar en que reside un operando, un resultado o la siguiente instruccin a ejecutar segn el caso.
Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de
direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres
diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de
direccionamiento

Direccionamiento Implcito
En este modo de direccionamiento no es necesario poner ninguna direccin de forma explcita, ya que
en el propio cdigo de operacin se conoce la direccin de el/los operando/s al (a los) que se desea
acceder o con el/los que se quiere operar.
Supongamos una arquitectura de pila, las operaciones aritmticas no requieren direccionamiento
explcito por lo que se ponen como: - add - sub ...
Porque cuando se opera con dos datos en esta arquitectura se sabe que son los dos elementos del
tope de la pila. Ejemplo de una pila
1 2 3 4 5 6 <- pila top() es 1 ntop() es 2

Direccionamiento Inmediato.
En este modo el operando es especificado en la instruccin
misma. En otras palabras, una instruccin de modo inmediato
tiene un campo de operando en vez de un campo de direccin. El
campo del operando contiene el operando actual que se debe utilizar en conjunto con la operacin
especificada en la instruccin. Las instrucciones de modo inmediato son tiles para inicializar los
registros en un valor constante.
Cuando el campo de direccin especifica un registro del procesador, la instruccin se dice que est en
el modo de registro.

Direccionamiento Directo

El campo de operando en la instruccin contiene la direccin en memoria donde se encuentra el


operando.
En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside
en la memoria y su direccin es dada directamente por el campo de direccin de la instruccin. En una
instruccin de tipo ramificacin el campo de direccin especifica la direccin de la rama actual.
Si hace referencia a un registro de la mquina, el dato estar almacenado en este registro y
hablaremos de direccionamiento directo a registro; si hace referencia a una posicin de memoria, el
dato estar almacenado en esta direccin de memoria (direccin
efectiva) y hablaremos de direccionamiento directo a memoria. Estos
modos de direccionamiento tienen una forma muy simple y no hay
que hacer clculos para obtener la direccin efectiva donde est el
dato. El tamao del operando, en el caso del direccionamiento directo
a registro, depender del nmero de registros que tenga la mquina;
en el direccionamiento directo a memoria, depender del tamao de
la memoria.

Direccionamiento Indirecto
El campo de operando contiene una direccin de memoria, en la que se encuentra la direccin efectiva
del operando.
Si hace referencia a un registro de la mquina, la direccin de memoria (direccin efectiva) que
contiene el dato estar en este registro y hablaremos de direccionamiento indirecto a registro; si hace
referencia a una posicin de memoria, la direccin de memoria (direccin efectiva) que contiene el
dato estar almacenada en esta posicin de memoria y hablaremos de
direccionamiento indirecto a memoria.
La desventaja principal de este modo de direccionamiento es que
necesita un acceso ms a memoria que el directo. Es decir, un acceso
a memoria para el direccionamiento indirecto a registro y dos accesos
a memoria para el direccionamiento indirecto a memoria; por este
motivo este segundo modo de direccionamiento no se implementa en la mayora de las mquinas.

Direccionamiento Absoluto
El campo de operando contiene una direccin en memoria, en la que se encuentra la instruccin. Y no se
cancela.

Direccionamiento De Registro
Sirve para especificar operandos que estn en registros.
En este modo, los operandos estn en registros que residen dentro de
la CPU.

Direccionamiento Indirecto Mediante Registros


El campo de operando de la instruccin contiene un identificador de registro en el que se encuentra la
direccin efectiva del operando.
En este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva
se almacena en la memoria. El control localiza la instruccin de la memoria y utiliza su parte de
direccin para acceder a la memoria de nuevo para leer una direccin
efectiva. Unos pocos modos de direccionamiento requieren que el
campo de direccin de la instruccin sea sumado al control de un
registro especificado en el procesador. La direccin efectiva en este
modo se obtiene del siguiente clculo:
Dir. efectiva = Dir. de la parte de la instruccin + Contenido del
registro del procesador.

Direccionamiento De Desplazamiento
Combina el modo directo e indirecto mediante registros.

Direccionamiento De Pila
Se utiliza cuando el operando est en memoria y en la cabecera de la pila.
Este direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales estn
marcados por el fondo de la pila y el puntero de pila (*SP). El puntero de pila apunta a la ltima

posicin ocupada. As, como puntero de direccionamiento usaremos el SP. El desplazamiento ms el


valor del SP nos dar la direccin del objeto al que queramos hacer referencia. En ocasiones, si no
existe C. de desplazamiento solo se trabajara con la cima de la pila. Como es un modo de
direccionamiento implcito, solo se utiliza en instrucciones determinadas, las ms habituales de las
cuales son PUSH (poner un elemento en la pila) y POP (sacar un elemento de la pila). Este tipo de
direccionamiento nos aporta flexibilidad pero por el contrario, es mucho ms complejo que otros tipos
estudiados ms arriba.

Direccionamiento Relativo a un Registro Base


Consiste, al igual que el indirecto a travs de registro, en calcular la direccin efectiva (EA, effective
address) como la suma del contenido del registro base y un cierto desplazamiento (offset) que siempre
ser positivo. Esta tcnica permite cdigos reentrantes y acceder de forma fcil y rpida a posiciones
cercanas de memoria. Este modo de direccionamiento es muy usado por los ensambladores cuando
se llaman a las funciones (para acceder a los parmetros almacenados en la pila).

Direccionamiento Relativo a un Registro ndice


Es similar al direccionamiento relativo a un registro base, excepto que es el contenido del registro
ndice el que indica el desplazamiento que se produce a partir de una direccin de memoria que se
pasa tambin como argumento a la orden que utiliza este modo de direccionamiento. Aunque en
esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro ndice
y una direccin de memoria.

Direccionamiento con Autoincremento/Autodecremento


Es un modo de direccionamiento anlogo al indexado, explicado anteriormente.
La nica diferencia es que permite un incremento o decremento de la direccin final o el registro ndice
segn los siguientes casos:

Indexado con autopreincremento: Incrementa el registro ndice primero (se incrementa un valor,
segn el tamao del objeto direccionado) y luego calcula la EA al igual que el direccionamiento

indexado.
Indexado con autoposincremento: Calcula la direccin efectiva y despus incrementa esta.
Indexado con autopredecremento: Decrementa el registro ndice y despus calcula la direccin
efectiva.

Indexado con autoposdecremento: Calcula la direccin efectiva y despus decrementa esta.

Direccionamiento Paginado
En el paginado la memoria se encuentra actualmente dividida en pginas (bloques de igual longitud).
Para obtener las direcciones se necesita:

Indicador de pgina (IP): en un registro especfico o de propsito general de la mquina.

Direccin de la palabra (DP): en el campo CD de la instruccin.

As, concatenando ambas partes se obtiene la direccin completa.


El problema viene cuando queremos referenciar un dato al que no podemos acceder de forma relativa (p.e.
porque los registros base no puedan alcanzar dicha posicin aun con el direccionamiento absoluto. Sin
embargo, slo una pequea parte de la memoria se puede acceder (64 kilobytes, si el desplazamiento es
de 16 bits).
El desplazamiento de 16 bits puede parecer muy pequeo en relacin con el tamao de la memoria de los
equipos actuales (esta es la razn por la 80386 se expandi a 32 bits). Podra ser peor ya que: los
servidores IBM System/360 slo tienen un
signo de 12 bits de desplazamiento. Sin
embargo, el principio de localizacin se aplica
en un corto espacio de tiempo, la mayora de
los elementos de datos que un programa quiere
acceder estn bastante cerca uno del otro.
Este

modo

de

direccionamiento

est

estrechamente relacionado con el modo de


direccionamiento absoluto.

1.7 Proceso de ensamblado y ligado


EDICION
Los archivos fuente de cdigo ensamblador deben estar en formato ASCII standard. Para esto puede
usarse cualquier editor que permita crear archivos sin formato, e.g. Edlin, Edit, Write, El editor del
Turbo Pascal, Works, Word, WordStar, etctera. Las declaraciones pueden ser introducidas en
maysculas y/o minsculas. Una buena prctica de programacin es poner todas las palabras
reservadas (directivas e instrucciones) en maysculas y todo lo del usuario en minsculas para fines

de facilidad de lectura del cdigo. Las sentencias pueden comenzar en cualquier columna, no pueden
tener ms de 128 caracteres, no se permiten lineas mltiples ni cdigos de control, y cada lnea debe
ser terminada con una combinacin de line-feed y carriage-return. Los comentarios se declaran con ; y
terminan al final de la lnea.
ENSAMBLADO El ensamblado se lleva a cabo invocando al MASM. Este puese ser invocado, usando
una lnea de comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Donde:
Objeto.- Es el nombre para el archivo objeto.
Listado.- Nombre del archivo de listado de ensamblado.
Cross.- Es un archivo de referencias cruzadas.
LIGADO De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este
puede ser invocado de la misma forma que el MASM. Los parmetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;]

Donde:
Objeto.- Es el nombre para el archivo .OBJ
Ejecutable.- Nombre del archivo .EXE
Mapa.- Nombre del archivo mapa
Librera.- Nombre del archivo biblioteca de rutinas
EJECUCION Para la ejecucin del programa simplemente basta teclear su nombre en el prompt de
MS-DOS y teclear ENTER. Con esto el programa ser cargado en memoria y el sistema proceder a
ejecutarlo. El proceso completo para poder crear un programa ejecutable con el Microsoft Macro
Assembler.

1.8 Desplegado de mensajes en el monitor


Para poder desplegar mensajes en lenguaje ensamblador primero debemos conocer la estructura del
programa en ensamblador.
PALABRAS RESERVADAS
PAGE: designa el nmero mximo de lneas para listar en una pgina y el nmero mximo de
caracteres en una lnea.
TITLE: para hacer que un titulo para un programa se imprima en la lnea 2 de cada pgina en el listado
del programa
SEGMENT y ENDS ASSUME IDENTIFICADORES: es un nombre que se aplica a elementos en el
programa.
OPERACIN
OPERANDO.

También podría gustarte