segmentacion
TRANSCRIPT
-
5/22/2018 Segmentacion
1/28
Arquitectura del 8086/8088
Organizacin de ComputadorasEl 8086
-
5/22/2018 Segmentacion
2/28
Arquitectura en pipeline Los procesadores previos al 8086, estaban limitados en
su desempeo por la necesidad de realizar los dospasos principales de ejecucin del procesador:Fetch/Execute, en forma secuencial. Es decir, no se puede
ejecutar una instruccin hasta que se traiga de memoria (Fetch);y no podan traerse instrucciones de memoria mientrasejecutaba una instruccin, pues el procesador estaba ocupado.
Resumiendo, un alto porcentaje del tiempo, elprocesador estaba ocupado haciendo Fetch, cuando su
funcin debiera ser ejecutar las instrucciones. Lacapacidad de ejecutar instrucciones slo se ocupaba enun bajo porcentaje.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
3/28
Arquitectura en pipeline Para solucionar sto, Intel desarroll la arquitectura en
pipelinedelFetch/Execute, en la cual simplemente sedivide la tarea en dos secciones:
una encargada del Fetch (BIU)
y otra del Execute (EU). De esta manera, existen circuitos separados para
cada funcin, los cuales trabajan en paralelo. Si bien el proceso an es secuencial, solamente al
principio se requiere desperdiciar tiempo en el Fetch. A partir de ah, Fetch va adelante delExecute, y trae
instrucciones al procesador mientras este ejecuta lasanteriores.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
4/28
Arquitectura del 8086/8088
El 8086
Estos microprocesadorestiene 2 procesadoresconectados internamente,estos procesadores son:
EUUnidad de ejecucin(Execution Unit).
BIUUnidad de interfaz con elBus (Bus Interface Unit).
Organizacin de Computadoras
-
5/22/2018 Segmentacion
5/28
La unidad de ejecucin (EU)
La unidad de ejecucin (EU) se encarga de realizar las operacionesaritmticas y lgicas, adems de proporcionar las direccioneslgicas al BIU --una direccin lgica est formada de dosdirecciones, la primera indica el segmento en el cual se esttrabajando y la otra indica el offset, o desplazamiento, de estesegmento; esto es segment:offset --.
La EU tiene una unidad aritmtica lgica (ALU) de 16 bits, unregistro de banderas y un conjunto de registros de propsitogeneral. El registro de banderas contiene 6 banderas de estado(que la EU manipula para indicar el estado del resultado de una
operacin lgica o aritmtica) y 3 banderas de control que sepueden manipular por los programas para alterar las operacionesdel procesador .
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
6/28
La Unidad de Interfasecon el Bus (BIU)
Es la responsables de la comunicacin externa delprocesador. Esta unidad de proceso se encarga detraducir las direcciones lgicas a direcciones fsicas de
la memoria con ayuda de los registros de segmento DS,SS, ES, CS e IP.
Para convertir una direccin lgica en una direccinfsica el BIU corre el valor del registro de segmento 4posiciones a la izquierda (que es equivalente amultiplicar por 16h) y suma el valor del offsetparaobtener un valor de 20 bits necesarios, como se muestraen la figura.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
7/28
MODELO DE PROGRAMACIN
DEL 8086.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
8/28
El modelo de programacin del 8086
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
9/28
Registros de datos o de propsito
generalAX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits ocomo dos registros separados de 8 bits (byte superior e inferior) cambiandola X por H o L segn queramos referirnos a la parte alta o bajarespectivamente. Por ejemplo,
AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente,
cualquier cambio sobre AH o AL altera AXAX = Acumu lador .
Es el registro principal, es utilizado en las instrucciones de multiplicacin ydivisin y en algunas instrucciones aritmticas especializadas, as como enciertas operaciones de carcter especfico como entrada, salida ytraduccin. Obsrvese que el 8086 es suficientemente potente para realizarlas operaciones lgicas, la suma y la resta sobre cualquier registro dedatos, no necesariamente el acumulador.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
10/28
Registros de propsito general
El 8086
BX = Base.Se usa como registro base para referenciar direcciones de memoria
con direccionamiento indirecto, manteniendo la direccin de la base ocomienzo de tablas o matrices. De esta manera, no es preciso indicar unaposicin de memoria fija, sino la nmero BX(as, haciendo avanzar deunidad en unidad a BX, por ejemplo, se puede ir accediendo a un granbloque de memoria en un bucle).
CX = Con tador.Se utiliza comnmente como contador en bucles y operaciones
repetitivas de manejo de cadenas. En las instrucciones de desplazamiento yrotacin se utiliza como contador de 8 bits.
DX = Datos .Usado en conjuncin con AX en las operaciones de multiplicacin ydivisin que involucran o generan datos de 32 bits. En las de entrada ysalida se emplea para especificar la direccin del puerto E/S.
Organizacin de Computadoras
-
5/22/2018 Segmentacion
11/28
Registros de segmento:Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas
reas pueden traslaparse total o parcialmente. No es posible acceder a una posicinde memoria no definida por algn segmento: si es preciso, habr de moverse alguno.
CS = Registro de segmento d e cdigo (cod e segment) .Contiene la direccin del segmento con las instrucciones del programa. Los
programas de ms de 64 Kb requieren cambiar CS peridicamente.
DS = Registro de segmento d e datos (data segment).Segmento del rea de datos del programa.
SS = Registro de segmento de pila (stack segm ent).Segmento de pila.
ES = Registro de segm ento extra (extra segment).Segmento de ampliacin para zona de datos. Es extraordinariamente til
actuando en conjuncin con DS: con ambos se puede definir dos zonas de 64 Kb,tan alejadas como se desee en el espacio de direcciones, entre las que se puedenintercambiar datos
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
12/28
Registros punteros de pila
SP = Pun tero de pi la (stack po inter).Apunta al inicio de la pila. Utilizado en las
instrucciones de manejo de la pila.BP = Puntero b ase (base po inter).
Es un puntero de base, que apunta a una zona dentrode la pila dedicada al almacenamiento de datos (variables locales yparmetros de las funciones en los programas compilados).
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
13/28
Puntero de instrucciones o contador deprograma
El 8086
IP = Pun tero de instru ccin (instr uc t ion po inter).Marca el desplazamiento de la instruccin en curso dentro del segmento de
cdigo. Es automticamente modificado con la lectura de una instruccin.
Organizacin de Computadoras
-
5/22/2018 Segmentacion
14/28
Registros ndices:
El 8086
SI = nd ice fuente (sour ce index ).Utilizado como registro de ndice en ciertos modos de
direccionamiento indirecto, tambin se emplea para guardar un
valor de desplazamiento en operaciones de cadenas.
DI = nd ice d estino (des tinatio n ind ex).Se usa en determinados modos de direccionamiento indirecto
y para almacenar un desplazamiento en operaciones con cadenas.
Organizacin de Computadoras
-
5/22/2018 Segmentacion
15/28
Registro de estadoo de indicadores (flags)
El 8086
Es un registro de 16 bits de los cuales 9 son utilizados para indicardiversas situaciones durante la ejecucin de un programa.
Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin, que reflejanlos resultados de operaciones del programa
los bits del 8 al 10 son indicadores de control y el resto no se
utilizan. Estos indicadores pueden ser comprobados por las instrucciones de
salto condicional, lo que permite variar el flujo secuencial delprograma segn el resultado de las operaciones.
Organizacin de Computadoras
-
5/22/2018 Segmentacion
16/28
Bit
Seala desbordamiento aritmticoDesbordamiento (Overflow Flag")OF
Indica la direccin de las operaciones.Direccin ("Direction Flag")DF
Este bit controla el estado del sistema deinterrupciones enmascarables . Cuando estactivo (1) permite las interrupciones; elestado inactivo (0) las deshabilita.
Interrupcin ("Interrupt Flag")IF
Si est activo, el procesador generaautomticamente una interrupcin despusde la ejecucin de cada instruccin, lo quepermite controlar paso a paso la ejecucin delprograma. Este bit debe estar normalmenteinactivo (a 0).
Detencin ("Trap Flag")TF
Si est activo indica que el resultado deoperacin o de comparacin son negativos.
Signo ("Sign Flag")SF
Est activo si el resultado de operacin escero o resultado de comparacin igual.Cero ("Zero Flag")ZF
Indicador de ajuste en operacionesaritmticas con cantidades BCD
Acarreo auxiliarAF
Si est activo Indica un nmero par de bitsactivos (bits cuyo contenido es 1). Estainformacin es til cuando el procesadorcontrola transmisiones de datos.
Paridad ("Parity Flag")PF
Indicador de arrastre del bit de mayor orden,que puede ocurrir en las operacionesaritmticas suma y resta.Acarreo ("Carry Flag")CF
UsoIndicador de:
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
17/28
NV ("No overflow")OV ("Overflow")DesbordamientoOF
UP incrementoDN ("Down") decrementoDireccinDF
DI ("Disabled Interrupt") desactivadaEI ("Enabled Interrupt") activaInterrupcinIF
PL ("Plus") positivoNG ("Negative") negativoSignoSF
NZ ("No Zero")ZR ("Zero")CeroZF
NA ("No Auxiliar")AC ("Auxiliar Carry")Acarreo auxiliarAF
PO ("Parity Odd") paridad imparPE ("Parity Even") paridad parParidadPF
NC ("No Carry")CY ("Carry yes")AcarreoCF
Indicativo si bit 0Indicativo si bit 1Indicador de:Bit
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
18/28
El 8086
Segmentacin de la Memoria en el 8086
Organizacin de Computadoras
-
5/22/2018 Segmentacion
19/28
SEGMENTACIN
El 8086
Direccin lgica
Registro de segmentoDesplazamiento
Direccin de segmento
Direccin fsica
CPU
SEGMENTO
Memoria
0
FFFFF
Organizacin de Computadoras
-
5/22/2018 Segmentacion
20/28
Segmento de Memoria
Un segmento es un reacontinua de memoria que puede
tener hasta 64K-bytes, quedebe comenzar en una localidadde memoria cuya direccin sealmite de 16 bytes (cantidaddenominadaprrafo) y quepuede traslaparse con otros
segmentos.
SEGMENTO
Memoria
0
FFFFF
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
21/28
El segmento de cdigo(tiene como base elcontenido del registro CS).
En este segmento se encuentran lasinstrucciones que forman el programa. Para
acceder a los datos contenidos en l, se usa elregistro IP como desplazamiento.
El segmento de datos(que tiene como base elregistro DS).
Contiene los datos que utiliza el programa(variables, etc.) Para acceder a los datoscontenidos en l, se suele utilizar los registrosSI y DI como desplazamiento.
El 8086
Segmentos de Memoria
Organizacin de Computadoras
-
5/22/2018 Segmentacion
22/28
Segmentos de Memoria- El segmento de pi la (con SS como base).- En l se desarrolla la pila del programa, utilizada para
almacn temporal de datos, llamadas a funciones, etc.Debe estar presente en todos los programas EXE de
forma obligada. Se utiliza el registro SP para acceder alos datos de este segmento.
- El segmento extra (con ES como base).- Su uso es opcional, y en l se encuentra un segmento
definido por el usuario y que, regularmente, contienedatos adicionales. Al igual que ocurre con el segmentode datos, para acceder a los datos contenidos en l, sesuelen utilizar los registros SI y DI.
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
23/28
SEGMENTACIN
El 8086
CS
DS
SS
ES
STACK
SEGMENTO EXTRADE DATOS
SEGMENTO DEDATOS
SEGMENTO DECDIGO
CS
OTRO SEGMENTO
SEGMENTO DECDIGO
PROGRAMA
MEMORIAMEMORIA
TRASLAPE DE SEGMENTOS
Organizacin de Computadoras
-
5/22/2018 Segmentacion
24/28
SEGMENTACIN
El 8086
02000
SEGMENTO DECDIGORELOCALIZADO
SEGMENTO DECDIGO EN CURSO
PROGRAMA
MEMORIA
Relocalizacin de un programa usando el registro CS
PROGRAMA
600
1A300600
nuevo (CS)=1A30
Organizacin de Computadoras
-
5/22/2018 Segmentacion
25/28
El 8086
Cada localidad de memoria tiene dos tipos de direcciones :Direccin Fsica y Direccin Lgica o efectiva
Una direccin Fsica es el valor nico de 20 bits que identifica lalocalizacin de cada byte en el espacio de memoria de 1 Mbyte.
Los programas tratan con direccin Lgicas mas que con la direccinFsica.
Para cualquier localidad de memoria, el valor base del segmentoubica el primer byte del contenido del segmento y el valor del offset
es la distancia, en bytes , de la localizacin destino del principio delsegmento.
Los valores de la base del Segmento y del offset son cantidades nosignadas de 16 bits; la direccin del byte ms bajo del segmentotiene un offset 0.
Direccin Fsica y Direccin Lgica
Organizacin de Computadoras
-
5/22/2018 Segmentacion
26/28
Formacin de una Direccin Fsica
El 8086
4 bitsDireccin desegmento
Direccin efectiva,lgica u offsetdesplazamiento
Direccin fsica
EL REGISTRO DESEGMENTO SEDESPLAZA 4 BITSHACIA LAIZQUIERDA(MULTIPLICACINx16 o 10H)
20 BITS
0000
Siempre que una memoria es accesada , se genera unadireccin fsica a partir de la direccin lgica.
+
Organizacin de Computadoras
-
5/22/2018 Segmentacion
27/28
Formacin de una Direccin Fsica
El 8086Organizacin de Computadoras
-
5/22/2018 Segmentacion
28/28
Formacin de una Direccin Fsica
El 8086
Por Ejemplo:
Si la direccin base del segmento es2915h, entonces las direcciones eneste segmento inician en 2915:0000y van hasta 2915:FFFF
Organizacin de Computadoras