MODOS DE DIRECCIONAMIENTO
Tiene 12 modos de direccionamiento básicos. Estos pueden clasificarse en 5 grupos:
1. Direccionamientos accesando dato inmediato y registro
de datos (modos inmediato y de
registro).
2. Direccionamiento accesando datos en memoria (modo
memoria)
3. Direccionamiento accesando puertos E/S. (modo
E/S)
4. Direccionamiento relativo
5. Direccionamiento implícito.
1. DIRECCIONAMIENTO ACCESANDO DATO Y REGISTRO INMEDIATO
1.1 Direccionamiento de registro.
Especifica
el operando fuente y el operando destino. Los registros deben ser del mismo
tamaño. ej. MOV DX, CX
MOV CL, DL.
1.2 Direccionamiento inmediato.
Un dato
de 8 o 16 bits se especifica como parte de la instrucción. p.ej. MOV CL, 03H. Aquí
el operando fuente está en modo inmediato y el destino en modo registro.
2. DIRECCIONAMIENTO ACCESANDO DATOS EN MEMORIA
2.1 Direccionamiento directo.
La
dirección efectiva (EA) de 16 bits se toma directamente del campo de
desplazamiento de la instrucción. El desplazamiento se coloca en la localidad
siguiente al código de operación. Esta EA o desplazamiento es la distancia de
la localidad de memoria al valor actual en el segmento de datos (DS) en el cual
el dato está colocado. Ej. MOV CX, START. START puede definirse como una
localidad de memoria usando las pseudoinstrucciones DB o DW.
2.2 Direccionamiento de registro indirecto.
La
dirección efectiva EA está especificada en un registro apuntador o un registro
índice. El apuntador puede ser el registro base BX o el apuntador base BP; el
registro índice puede ser el Indice Fuente (SI) o el Indice Destino (DI).
Ej. MOV (DI),BX.
2.3 Direccionamiento base
EA se
obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a los
contenidos de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria es
accesada, la dirección física de 20 bits es calculada de BX y DS, por otra
parte, cuando la pila es Accesada, la dirección es calculada de BP y SS.
Ej. MOV AL, START (BX). el operando fuente está en modo
base, y la EA se obtiene sumando los valores de START y BX.
2.4 Direccionamiento indexado.
EA se
calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI.
Ej. MOV BH,START (SI).
2.5 Direccionamento base indexado.
EA se
calcula sumando un registro base (BX o BP), un registro índice (DI o SI), y un
desplazamiento (8 o 16 bits).
Ej. MOV ALPHA (SI)(BX),CL.
Este
direccionamiento proporciona una forma conveniente para direccionar un arreglo
localizado en la pila.
2.6 Direccionamiento (cadena?)
Este
modo usa registros índice. La cadena de instrucciones automáticamente asume que
SI apunta al primer byte o palabra del operando destino. Los contenidos de SI y
DI son incrementados automáticamente (poniendo a 0 DF mediante la instrucción
CLD) o decrementados (poniendo a 1 DF mediante la instrucción STD) para apuntar
al siguiente byte o palabra. El segmento del operando fuente es DS y puede ser
encimado.
El
segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVS
BYTE.
3. DIRECCIONAMIENTO ACCESANDO PUERTOS (E/S)
Hay dos
tipos de direccionamiento usando puertos: directo e indirecto.
En el
modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual
permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.
En el
modo indirecto, el número de puerto se toma de DX, permitiendo así 64K puertos
de 8 bits o 32K puertos de 16 bits.
Las transferencias E/S de 8 y 16 bits deben hacerse vía
AX y AL, respectivamente.
4. DIRECCIONAMIENTO RELATIVO.
En este
modo el operando se especifica como un desplazamiento de 8 bits con signo,
relativo al PC. Ej. JNC START. Si C=0,
entonces el PC se carga con PC+el valor de START.
5. DIRECCIONAMIENTO IMPLICITO.
Las
instrucciones que usan esta modo no tienen operandos. Ej. CLC.