medios 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:
INSTRUCCIÓN DESTINO, FUENTE
Donde destino indica dónde se deja el resultado de la operación en la que puedenparticipar (según casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que sólo tienen un operando, como la siguiente, e incluso ninguno:
INSTRUCCIÓN DESTINO
Como ejemplos, aunque no hemos visto aún las instrucciones utilizaremos un par de ellas:
Copia o movimiento de datos (MOV) y
Suma (ADD).
ORGANIZACIÓN DE DIRECCIONES: SEGMENTACIÓN.Como ya sabemos, los microprocesadores 8086 y compatibles poseen registros de un tamaño máximo de 16 bits que direccionarían hasta 64K; en cambio, 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 seasocia 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 registrosde 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: por ejemplo,
3D00h:0300h es equivalente a 3D30:0000h.
Es importante resaltar que no se puede acceder a más de 64Kb en un segmento de datos. Por ello, en los procesadores 386 y superiores no se deben emplear registros de 32 bit para generar direcciones (bajo DOS), aunque para los cálculos pueden ser interesantes (no obstante, sí sería posible configurar estos procesadores para poder direccionar más memoria bajo DOS con los registros de 32 bits, aunque no resulta por lo general práctico).
MODOS DEDIRECCIONAMIENTO
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 mas importantes dedireccionamiento.
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 puedeindicar 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 (ojo, no variables) 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...
Regístrate para leer el documento completo.