Direccionamiento modo real
Modo básico de funcionamiento del 8086.
Emulado por todos los procesadores de la familia XX86.
Mantenido por compatibilidad.
No pueden utilizarse todos los recursos de la CPU. Máxima cantidad de memoria direccionable: 1 Mbyte -> 20 bits. Modo utilizado por MS-DOS cuando no se instalan controladores de memoria.
Los procesadores 80X86 en elmodo real
15
87
0
AH BH CH DH
AX BX CX DX SP BP SI DI CS DS ES SS IP FLAGS
AL BL CL DL
Acumulador Base Contador Datos Puntero de pila Puntero base Registro de índice fuente Registro de índice destino Segmento de código Segmento de datos Segmento extra Segmento de pila Puntero de instrucciones Registro de estado
Los procesadores 80X86 en el modo real
Registro de estado(flags)
15
OF DF IF TF SF ZF AF PF
0
CF
CF Acarreo OF Desbordamiento ZF Cero SF Signo PF Paridad AF Ajuste decimal DF Dirección de recorrido de cadenas IF Máscara de interrupción TF Ejecución paso a paso FLAGS DE CONTROL FLAGS DE ESTADO
Los procesadores 80X86 en el modo real
SEGMENTOS: Registros internos de 16 bits. No pueden direccionar toda la memoria (1 Mbyte) Un segmento es unbloque de memoria de 64 Kbytes, definido por su base.
Base del segmento
64
Memoria
K
by te
s
Los procesadores 80X86 en el modo real
Una dirección de memoria absoluta se expresa como un desplazamiento (offset) dentro de un segmento
Desplazamiento (offset)
Dirección física
Registro de segmento
Memoria
En general las direcciones de memoria se presentan como: BASE :OFFSET
Los procesadores 80X86 en el modo real
Obtención de la dirección efectiva: OFFSET (16 bits)
+
BASE SEGMENTO (16 bits)
Desplazado 4 bits
=
DIRECCIÓN EFECTIVA (20 bits) Existen muchas formas de expresar una dirección: Ejemplo: dirección efectiva absoluta : F3B5A BASE F3B5 F3B0 F300 F200 : : : : OFFSET 000A 005A 0B5A 1B5A
En general existen 4096 formas diferentes de expresaruna dirección
Los procesadores 80X86 en el modo real
Registros de segmento: Existen 4 registros de segmento: CS, DS, ES y SS CS DS ES SS Contiene el código del programa Destinado a contener datos Destinado también a contener datos Contiene la pila del programa
Los segmentos pueden colocarse de cualquier modo en la memoria:
Contiguos Separados Superpuestos
CS DS ES SS
Losprocesadores 80X86 en el modo real
Generación de las direcciones:
BASE CICLOS DE “FETCH” ACCESOS A LA PILA ACCESOS A DATOS REGISTRO CS REGISTRO SS
CUALQUIER REGISTRO DS, CS, ES o SS
OFFSET REGISTRO IP REGISTRO SP
SEGÚN MODO DE DIRECCIONAMIENTO
Para pequeñas aplicaciones que necesiten poca memoria se puede utilizar un solo segmento haciendo: CS = DS = ES = SS Este es el caso de los ficheros*.COM de MS-DOS
Los procesadores 80X86 en el modo real
MODOS DE DIRECCIONAMIENTO
MODO
FORMATO DEL OPERANDO reg valor (dato) variable (desp) [BX] [BP] [DI] [SI] [BX + desp] [BP + desp] [DI + desp] [SI + desp] [BX + SI + desp] [BP + SI + desp] [BX + DI + desp] [BP + DI + desp]
SEGMENTO POR DEFECTO NINGUNO NINGUNO DS DS SS DS DS DS SS DS DS DS SS DS SS
A REGISTRO INMEDIATO DIRECTOINDIRECTO POR REGISTRO
RELATIVO A BASE
INDEXADO
INDEXADO A BASE
Los procesadores 80X86 en el modo real
Para utilizar otro registro de segmento que no sea el establecido por defecto se utiliza el llamado: PREFIJO DE SEGMENTO
REGISTRO BP, BX, SI, DI IP SP AX,CX,DX
SEGMENTO CUALQUIERA SIEMPRE CS SIEMPRE SS NINGUNO
Se escribe el registro deseado seguido de “:” Ejemplo:
MOVAX, [SI+desp] MOV AX, ES:[SI+desp]
relativo a DS relativo a ES
LOS PROCESADORES XX86 EN EL MODO REAL El juego de instrucciones en el modo real
Instrucciones de movimiento de datos
MOV dst, fnt Destino : Registro o posición de memoria Fuente : Registro, posición de memoria o dato inmediato PROHIBIDO: Dato inmediato a reg. de segmento, Destino=CS Destino y fuente ambos en memoria
POP...
Regístrate para leer el documento completo.