Sei sulla pagina 1di 9

MODOS DE DIRECCIONAMIENTO

BRAYAN DANILO FIERRO QUIROGA

Presentado a:
ING. MAURICIO BARRIOS

GRUPO: AD

UNIVERSIDAD AUTNOMA DEL CARIBE.


FACULTAD DE INGENIERA.
PROGRAMA INGENIERA MECTRONICA.
BARRANQUILLA.
2014

MODOS DE DIRECCIONAMIENTO.
Son los distintos modos de acceder a los datos en memoria por parte del procesador. Antes de ver
los modos de direccionamiento, echaremos un vistazo a la sintaxis general de las instrucciones,
ya que pondremos alguna en los ejemplos:
INSTRUCCIN

DESTINO, FUENTE

Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar
(segn casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que slo
tienen un operando, como la siguiente, e incluso ninguno:
INSTRUCCIN

DESTINO

Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un par de ellas:

Copia o movimiento de datos (MOV) y


Suma (ADD).

MODOS DE DIRECCIONAMIENTO
Una instruccin de 8088/8086 no solo contienen informacin sobre la operacin particular a
realizar, sino que tambin incluye las especificaciones para el tipo de operando a manipular, as
como tambin la posicin de estos operandos. El microprocesador determina el modo de
direccionamiento que es aludido por la sintaxis de la instruccin. Son siete los modos mas
importantes de direccionamiento.

Direccionamiento inmediato
Direccionamiento de registros
Direccionamiento directo
Direccionamiento indirecto de registros
Direccionamiento relativo a base
Direccionamiento indexado directo
Direccionamiento indexado a base
Direccionamiento implcito
Direccionamiento exacto

DIRECCIONAMIENTO INMEDIATO
El operando es una constante situada detrs del cdigo de la instruccin. Sin embargo, como
registro destino no se puede indicar uno de segmento (habr que utilizar uno de datos como paso
intermedio).
ADD AX,0fffh

El nmero hexadecimal 0fffh es la constante numrica que en el direccionamiento inmediato se


le sumar al registro AX.
Al trabajar con ensambladores, se pueden definir smbolos constantes (ojo, no variables) y es
ms intuitivo:
Dato EQU 0fffh;
MOV AX, Dato

smbolo constante

Si se referencia a la direccin de memoria de una variable de la siguiente forma, tambin se trata


de un caso de direccionamiento inmediato:
Dato

DW 0fffh;
ahora es una variable
MOV AX,OFFSET dato ; AX = "direccin de memoria" de dato

Porque hay que tener en cuenta que cuando traduzcamos a nmeros el smbolo podra quedar:
17F3:0A11 DW FFF
MOV AX,0A11

DIRECCIONAMIENTO DE REGISTROS
Los operandos, necesariamente de igual tamao, estn contenidos en los registros indicados en la
instruccin:
MOV DX,AX
MOV AH,AL
Este puede ser un valor de 8 o 16 bits, el microprocesador interpreta la longitud del operando por
el nombre del registro.

DIRECCIONAMIENTO DIRECTO
El operando est situado en la direccin indicada en la instruccin, relativa al segmento que se
trate:
MOV AX,[57D1h]
MOV AX,ES:[429Ch]

Esta sintaxis (quitando la 'h' de hexadecimal) sera la que admite el programa DEBUG
(realmente habra que poner, en el segundo caso, ES: en una lnea y el MOV en otra). Al trabajar
con ensambladores, las variables en memoria se pueden referenciar con etiquetas simblicas:
MOV AX,dato
MOV AX,ES:dato
dato

DW 1234h

; variable del programa

En el primer ejemplo se transfiere a AX el valor contenido en la direccin apuntada por la


etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo ejemplo
se indica de forma explcita el segmento tratndose del segmento ES. La direccin efectiva se
calcula de la forma ya vista con anterioridad: Registro de 8segmento * 16 +
desplazamiento_de_dato (este desplazamiento depende de la posicin al ensamblar el programa).

DIRECCIONAMIENTO INDIRECTO DE REGISTROS:


El operando se encuentra en una direccin sealada por un registro de segmento*16 ms un
registro base (BX/BP) o ndice (SI/DI). (Nota: BP acta por defecto con SS).
MOV AX,[BP]
MOV ES:[DI],AX

; AX = [SS*16+BP]
; [ES*16+DI] = AX

RELATIVO DE BASE
La direccin de un operando se obtiene de la suma del numero y el contenido de un registro base
(el BX o el BP), relativo al segmento seleccionado. El modo relativo a base es mas usado
frecuentemente para acceder a estructuras de datos complejas.

INDIRECTO INDEXADO DIRECTO


El operando se encuentra en una direccin determinada por la suma de un registro de
segmento*16, un registro de ndice, SI o DI y un desplazamiento de 8 16 bits. Ejemplos:
MOV AX,[DI+DESP]
ADD [SI+DESP],BX

MOV AX,desp[DI]
ADD desp[SI],BX

INDIRECTO CON BASE E NDICE O INDEXADO A BASE:


El operando se encuentra en una direccin especificada por la suma de un registro de
segmento*16, uno de base, uno de ndice y opcionalmente un desplazamiento de 8 16 bits:
MOV AX,ES:[BX+DI+DESP]
MOV CS:[BX+SI+DESP],CX

MOV AX,ES:desp[BX][DI]
MOV CS:desp[BX][SI],CX

Combinaciones de registros de segmento y desplazamiento.


Como se ve en los modos de direccionamiento, hay casos en los que se indica explcitamente el
registro de segmento a usar para acceder a los datos. Existen unos segmentos asociados por
defecto a los registros de desplazamiento (IP, SP, BP, BX, DI, SI); slo es necesario declarar el
segmento cuando no coincide con el asignado por defecto. En ese caso, el ensamblador genera
un byte adicional (a modo de prefijo) para indicar cul es el segmento referenciado. La siguiente
tabla relaciona las posibles combinaciones de los registros de segmento y los de desplazamiento:
CS
SS
DS
IP S
No
No
SP No
S
No
BP con prefijo
por defecto
con prefijo
BX con prefijo
con prefijo
por defecto
SI con prefijo
con prefijo
por defecto
DI con prefijo
con prefijo
por defecto
(1) Tambin por defecto en el manejo de cadenas.

ES
No
No
con prefijo
con prefijo
con prefijo
con prefijo(1)

Los 386 y superiores admiten otros modos de direccionamiento ms sofisticados, que se vern en
el prximo captulo, despus de conocer todas las instrucciones del 8086. Por ahora, con todos
estos modos se puede considerar que hay ms que suficiente. De hecho, algunos se utilizan en
muy contadas ocasiones.

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 del (de 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
...
Por qu? 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

donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos con los
que se opera al llamar a una orden en concreto.

DIRECCIONAMIENTO EXTENDIDO

En este modo la direccin efectiva del operando se suministra en los dos bytes siguientes al
cdigo de operacin. Permite el acceso a cualquier posicin dentro del mapa de memoria del
sistema.

Potrebbero piacerti anche