facebook

mi facebook

miércoles, 20 de abril de 2011

1.3 Tratamientos de Operandos y Modos de Direccionamiento de Maquina Objeto

Técnicas de direccionamiento
El campo o campos de dirección en un formato de instrucción típico son algo limitados. Para hacer referencia a un rango mas grande de localidades en memoria principal o, para sistemas en memoria virtual. Para lograr este objetivo, se han empleado una variedad de técnicas de direccionamiento. Todos involucran un trueque entre el rango de direcciones y/o la flexibilidad de direccionamiento por una parte, y el numero de referencias de memoria y/o la complejidad de calculo de la dirección por otro.
• Direccionamiento Inmediato. El microprocesador decodifica el modo de direccionamiento que está siendo referenciado. Se transfiere un byte, word o dword de datos inmediatos hacia el registro o localidad en la memoria del destino. Ejemplo:
MOV AL, 22H
La instrucción copia el 22H de tamaño byte al registro AL.
• Direccionamiento de registros. Transfiere un byte, word o dword desde el registro fuente o localidad en la memoria, hasta el registro o localidad destino en la memoria. Ejemplos:
MOV AX, BX
MOV CX, DX
La instrucción copia el contenido de tamaño de palabra en el registro DX y lo pasa al registro CX. NOTA: de los 8
modos de direccionamiento, el inmediato y el de registros tienen los ciclos de ejecución mas pequeños, como el dato operando puede ser incluido en la misma instrucción y ya este almacenado internamente se evita el tiempo de acceso a dispositivos externos o memoria externa.
• Direccionamiento directo. Mientras el direccionamiento inmediato solamente almacena datos en registros o locaciones de memoria, el direccionamiento directo mueve datos de locaciones de memoria a registro ó desde registro a locaciones de memoria. Ejemplo:
LOC_1 DB 00
LOC_2 DW 0000
MOV AL, LOC_1
MOV BX, LOC_2
MOV LOC_1, AH
• Direccionamiento indirecto por registros. En lugar de diferenciar con un rotulo de dirección del operando fuente, el valor del operando es señalado por una dirección de desplazamiento almacenada en alguno de los siguientes registros: SI (índice fuente), DI (índice destino), BX (registro base) y BP (puntero base). El designador del operando fuente es reconocido por corchetes ( [ ] ). Ejemplo:
MOV AX, [BX]
REGISTROS
GENERALES
REGISTROS DE
SEGMENTACION

3
La instrucción copia los datos en una dirección del segmento de datos con un desplazamiento dado por BX y lo pasa al registro AX.
• Direccionamiento relativo a la base. La dirección efectiva de un operando se obtiene de la suma del desplazamiento y contenido de un registro base ( BX o BP ) relativo al segmento relacionado. Ejemplo:
MOV AL, [BX] + 4 ó MOV AL, [BX + 4] ó MOV AL, 4[BX]
La instrucción copia los datos de una dirección en el segmento de datos, formada por el contenido de BX mas 4, y lo pone en el registro AL.
• Direccionamiento indexado directo. La dirección del desplazamiento del operando se calcula sumando el
desplazamiento a un registro índice (SI o DI) en el desplazamiento seleccionado. Frecuentemente se utiliza para
acceder a los elementos de un array estático. Ejemplo:
MOV AL, ARRAY [SI]
La instrucción copia la dirección formada de sumar ARRAY y SI entonces la coloca en el registro AL.
• Direccionamiento base indexado. El operando se localiza en el segmento seleccionado en un desplazamiento determinado por la suma de los contenido del registro base, registro índice y opcionalmente el desplazamiento. Si no se incluye desplazamiento entonces, el registro base indexado se utiliza con mas frecuencia para acceder a los elementos de un array dinámico. Ejemplo:
MOV AX, ARRAY [ BX+ DI]
La instrucción copia la dirección formada de sumar ARRAY, BX y DI entonces la coloca en el registro AX.
• Extensiones del 80386. Los modos de direccionamiento de 32 bits se extienden para permitir que cualquier registro sea utilizado como registro base o registro índice. Los modos de 32 bits requieren que los registros índices y bases si se usan tengan valores validos de 32 bits.
Ensambladores residentes y cruzados Los ensambladores son traductores que transforman programas fuentes escritos en lenguaje ensamblador, en programas objetos equivalentes escritos en lenguaje máquina. La traducción se realiza de tal forma que cada instrucción escrita en ensamblador se transforma en una única instrucción en lenguaje maquina. El lenguaje ensamblador es una simplificación simbólica del lenguaje maquina y el programa ensamblador es su traductor.
• Ensamblador cruzado (cross assembler). Es un traductor de lenguaje ensamblador a lenguaje maquina que traduce en una computadora y ejecuta en otra distinta. La ventaja que ofrece este tipo de traductor es utilizar una computadora de características potentes para desarrollar programas que van dirigidos a otra cuya potencia y facilidades para el programador están ciertamente limitados.
• Macroensamblador (macroassembler). Es un ensamblador que posee la característica de permitir el uso de lo que se denomina microinstrucción. Una micro instrucción no es mas que un grupo de instrucciones que de forma global reciben nombre simbólico al que se puede hacer referencia en un programa tantas veces como se desee.
El macroensamblador coloca en la traducción el mencionado grupo de instrucciones en cada una de las referencias (expansión de macros).
• Microensamblador. Es un traductor utilizado en la microprogramacion que algunas computadoras tienen. Estos microprogramas permiten cierta flexibilidad al repertorio de instrucciones maquina de la computadora.
• Ensamblador de una pasada o increméntales. Traducen en una sola pasada construyendo la tabla de símbolos a medida que van apareciendo las variables y etiquetas. Tienen el pequeño inconveniente de no permitir lo que se denomina referencias adelantadas, es decir, referencias a líneas de programa posteriores no traducidos.
• Ensamblador de dos pasadas. Realizan la traducción en dos pasadas, en la primera leen el programa fuente construyendo la tabla de símbolos y asignando las correspondientes direcciones, en la segunda vuelven a leer el programa traduciéndolo a lenguaje maquina. Si están permitidos las referencias adelantadas, siendo este tipo de ensamblador los mas utilizados actualmente.

No hay comentarios:

Publicar un comentario