ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Modos De Direccionamiento


Enviado por   •  27 de Marzo de 2014  •  1.445 Palabras (6 Páginas)  •  353 Visitas

Página 1 de 6

MODOS DE DIRECCIONAMIENTO.

Son los distintos modos de acceder a los datos en memoria por parte del procesador.

• Modo de direccionamiento: mecanismo que permite conocer la ubicación de un dato o instrucción.

• Objeto: Dato o instrucción que se desea direccionar.

• Un computador dispone de varios modos de direccionamiento.

• Objetivos de los modos de direccionamiento:

o Reducir el espacio ocupado en memoria por las instrucciones.

o Permitir la reubicación del código.

o Facilitar el manejo de las estructuras de datos

• INSTRUCCIÓN DESTINO, FUENTE: Donde destino indica dónde se deja el resultado de la operación en la que pueden participar, según casos, FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que sólo tienen un operando e incluso ninguno.

• INSTRUCCIÓN DESTINO:

o Copia o movimiento de datos (MOV).

o Suma (ADD).

ORGANIZACIÓN DE DIRECCIONES: SEGMENTACIÓN.

La dirección se compone de 20 bits con capacidad para 1Mb, hay por tanto que recurrir a algún artificio para direccionar toda la memoria.

Dicho artificio consiste en la segmentación: se trata de dividir la memoria en grupos de 64K. Cada grupo se asocia con un registro de segmento; el desplazamiento (offset) dentro de ese segmento lo proporciona otro registro de 16 bits.

La dirección absoluta se calcula multiplicando por 16 el valor del registro de segmento y sumando el offset, obteniéndose una dirección efectiva de 20 bits. Esto equivale a concebir el mecanismo de generación de la dirección absoluta, como si se tratase de que los registros de segmento tuvieran 4 bits a 0 (imaginarios) a la derecha antes de sumarles el desplazamiento:

dirección = segmento * 16 + offset

En la práctica, una dirección se indica con la notación (SEGMENTO: OFFSET); además, una misma dirección puede expresarse de más de una manera.

MODOS DE DIRECCIONAMIENTO

Una instrucción de 8088/8086 no solo contienen información sobre la operación particular a realizar, sino que también incluye las especificaciones para el tipo de operando a manipular, así como también la posición de estos operandos. El microprocesador determina el modo de direccionamiento que es aludido por la sintaxis de la instrucción.

Son siete los modos más 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 INMEDIATO

El operando es una constante situada detrás del código de la instrucción. 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 número hexadecimal 0fffh es la constante numérica que en el direccionamiento inmediato se le sumará al registro AX.

Al trabajar con ensambladores, se pueden definir símbolos constantes y es más intuitivo:

Dato EQU 0fffh; símbolo constante

MOV AX, Dato

Si se referencia a la dirección de memoria de una variable de la siguiente forma, también se trata de un caso de direccionamiento inmediato:

Dato DW 0fffh; ahora es una variable

MOV AX,OFFSET dato ; AX = "dirección de memoria" de dato

Porque hay que tener en cuenta que cuando traduzcamos a números el símbolo podría quedar:

17F3:0A11 DW FFF

MOV AX,0A11

DIRECCIONAMIENTO DE REGISTROS

Los operandos, necesariamente de igual tamaño, están contenidos en los registros indicados en la instrucción.

En el modo de direccionamiento de registro de 8 bits, el valor del operando es equivalente al contenido del registro especifico del registro especificado o registro par.

En este modo, la dirección especificada del destino y / o la fuente corresponde al registro real en la página actual del archivo de registro.

En el direccionamiento de un registro de 4 bits las direcciones del destino y la fuente apuntan al Working Register dentro del actual Working Register Group. Estos cuatro bits de dirección se combinan con el Register Pointer para formar una dirección del registro afectado de 12 bits.

DIRECCIONAMIENTO DIRECTO

El operando está situado en la dirección indicada en la instrucción, relativa al segmento que se trate:

MOV AX,[57D1h]

MOV AX,ES:[429Ch]

Esta sintaxis (quitando la 'h' de hexadecimal) sería la que admite el programa DEBUG. Al trabajar con ensambladores, las variables en memoria se pueden referenciar con etiquetas simbólicas:

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 dirección apuntada por la etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo ejemplo se indica de forma explícita el segmento tratándose del segmento ES. La dirección efectiva se calcula de la forma ya vista con anterioridad: Registro de 8segmento * 16 + desplazamiento_de_dato (este desplazamiento depende de la posición al ensamblar el programa).

DIRECCIONAMIENTO INDIRECTO DE REGISTROS:

El operando se encuentra en una dirección señalada por un registro de segmento*16 más un registro base (BX/BP) o índice (SI/DI).

En el modo de direccionamiento indirecto de registro, los contenidos del registro especificado son equivalentes a la dirección del operando.

Dependiendo de la instrucción seleccionada, el contenido del registro

apunta a un Registro o a una localidad de memoria del programa.

RELATIVO DE BASE

La dirección 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 dirección 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] ó MOV AX,desp[DI]

ADD [SI+DESP],BX ó ADD desp[SI],BX

INDIRECTO CON BASE E ÍNDICE O INDEXADO A BASE

El operando se encuentra en una dirección 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 AX,ES:desp[BX][DI]

MOV CS:[BX+SI+DESP],CX ó 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 explícitamente 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); sólo 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 cuál es el segmento referenciado.

La siguiente tabla relaciona las posibles combinaciones de los registros de segmento y los de desplazamiento:

CS SS DS ES

IP Sí No No No

SP No Sí No No

BP con prefijo por defecto con prefijo con prefijo

BX con prefijo con prefijo por defecto con prefijo

SI con prefijo con prefijo por defecto con prefijo

DI con prefijo con prefijo por defecto con prefijo

Los 386 y superiores admiten otros modos de direccionamiento más sofisticados, que se verán en el próximo capítulo, después de conocer todas las instrucciones del 8086. Por ahora, con todos estos modos se puede considerar que hay más que suficiente. De hecho, algunos se utilizan en muy contadas ocasiones.

...

Descargar como  txt (8 Kb)  
Leer 5 páginas más »
txt