Beruflich Dokumente
Kultur Dokumente
Informática
Microprocesador 8086
Digital II
Presentación de Docentes y Material
è
Docentes:
è
Ing. Silvia Domizi
è
Ing. Diego Alegrechi
è
Material de Cátedra – (disponible en www.dsi.fceia.unr.edu.ar)
1. Intel 8086 - Datasheet
2. Los microprocesadores Intel - B. Brey – 3º Edición – Prentice Hall
(Cap 7).
Microprocesador
➢
Dispositivo electrónico semiconductor que incluye la ALU, conjunto de registros y
circuitos de control en un mismo chip.
➢
Incluye un set de instrucciones para manipular los datos y comunicarse con los
periféricos.
➢
No incluye memorias internas. Posee buses de datos y direcciones que posibilitan la
conexión con memorias de programas y datos externas al chip del microprocesador.
Microcontrolador
➢
Microprocesador más memorias y periféricos específicos integrados en un mismo
chip (temporizadores, conversores A/D, D/A, puertos UART, CAN, SPI, I2C, USB,
ETHERNET, etc).
➢
Sistemas totalmente dedicados a resolver problemas específicos (sistemas
embebidos).
Principales Características
➢
Procesador de 16 bits (puede operar en 8 ó 16 bits pero
los buses internos son todos de 16 bits).
➢
Hasta 1 Mbyte de memoria direccionable (mapeable) –
Bus de 20 lineas de direcciones.
➢
Espacio de memoria para periféricos de entrada salida
de 64 Kbytes.
➢
Los buses de datos y direcciones están multiplexados
temporalmente.
➢
La memoria o las memorias donde se aloja el código del
programa y los datos es externa al microprocesador. El
8086 NO posee ningún tipo de memoria integrada para
código o datos.
➢
Velocidad de operación (5MHz, 8MHz, 10MHz)
➢
Encapsulado de 40 pines.
Estos microprocesadores
tienen dos unidades
inteligentes conectadas
internamente:
EU
Unidad de ejecución
(Execution Unit).
BIU
Unidad de interfaz
con el Bus (Bus
Interface Unit).
Se encarga de decodificar
las instrucciones cargadas
(Fetched) por la BIU,
generar las señales de
control y ejecutar las
instrucciones
Es la responsables de la
comunicación externa del
procesador. Esta unidad de
proceso se encarga de
traducir las direcciones
lógicas a direcciones físicas
de la memoria con ayuda
de los registros de
segmento DS, SS, ES, CS
e IP.
Concepto de Pipeline
MODELO DE PROGRAMACIÓN
DEL 8086.
Es el registro principal, es
utilizado en las instrucciones de
multiplicación y división y en
algunas instrucciones aritméticas
especializadas, así como en
ciertas operaciones de carácter
específico como entrada, salida y
traducción. Obsérvese que el
8086 es suficientemente potente
para realizar las operaciones
lógicas, la suma y la resta sobre
cualquier registro de datos, no
necesariamente el acumulador.
CX = Contador.
DX = Datos.
Registros de segmento
Registros de segmento
Registros de segmento
DS = Registro de segmento de
datos (data segment).
Registros de segmento
Registros de segmento
IP = Puntero de instrucción
(instruction pointer).
Marca el desplazamiento de la
instrucción en curso dentro del
segmento de código. Es
automáticamente modificado con
la lectura de una instrucción.
Registros índices:
Registros índices:
PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar
Segmentación de la Memoria en el
8086
FFFFFh
00000h
CS:0000h
00000h
Los programas tratan con dirección Lógicas mas que con la dirección Física.
Los valores de la base del Segmento y del offset son cantidades no signadas
de 16 bits; la dirección del byte más bajo del segmento tiene un offset 0.
EL REGISTRO DE
4 bits SEGMENTO SE
Dirección de
DESPLAZA 4 BITS
segmento
HACIA LA
IZQUIERDA
(MULTIPLICACIÓN
x16)
20 BITS
06/10/2014 Microprocesador 8086 – Digital II 36
Microprocesador 8086 - Segmentación
Segmentos Físicos Espacio de Memoria
→
Empiezan en direcciones físicas divisibles por 16. h
FFFFF
SS:FFFF
→
Tienen un tamaño fijo de 64 Kbytes. h
Segmento Físico de Pila
→
Utilizando direcciones lógicas, se puede acceder a Segmento
(64 Kbytes)
Lógico de Pila
todos los registros de un segmento físico sólo
cambiando el desplazamiento. SS:0000h
→
CS, DS, SS y ES son los registros del 8086 que
contienen las direcciones de inicio de los h
CS:FFFF
Segmento Físico de
respectivos segmentos físicos. Código
Segmento (64 Kbytes)
Lógico de Código
Segmentos Lógicos CS:0000h
→
Es una sección de memoria de tamaño VARIABLE y en
general puede contener código, datos o pila. h
DS:FFFF
Segmento Físico de
→
Para poder definir estos códigos son necesarios el uso de Segmento Datos
(64 Kbytes)
las directivas del ensamblador (emu8086) Lógico de Datos
DS:0000h
00000h
SEGMENTOS SOLAPADOS
CS CS
SEGMENTO DE PROGRAMA
CÓDIGO SEGMENTO DE
CÓDIGO
DS
SEGMENTO DE
DATOS
OTRO SEGMENTO
ES
SEGMENTO
EXTRA DE DATOS
SS
STACK
MEMORIA
MEMORIA
06/10/2014 Microprocesador 8086 – Digital II 39
Microprocesador 8086 - Segmentación
02000
600
PROGRAMA SEGMENTO DE
CÓDIGO EN CURSO
PROGRAMA SEGMENTO DE
CÓDIGO
RELOCALIZADO
MEMORIA
Por registro
Inmediato
Directo
Indirecto – Por Registro
Indirecto – Relativo a la Base
Indirecto – Relativo a las base más índice
Indirecto – Relativo a la base más índice con desplazamiento
Direccionamientos por Registro e Inmediato
En este tipo de operaciones no intervienen operandos que hagan referencia a una posición
de memoria.
En los restantes modos de direccionamiento SIEMPRE uno (y sólo uno) de los dos operandos
hace referncia a una posición de memoria.
Direccionamiento Directo
Direccionamiento Indirecto – Por Registro
Direccionamiento Indirecto – Relativo a la Base
TBL_datos db 1,2,3 Transfiere el segundo Byte de la tabla
“TBL_datos” a la parte baja del registro BX. La
MOV DI,1 BIU calcula la dirección como:
MOV BL,TBL_dato[DI] Dir = DS:(offset(TBL_datos) + DI)
Direccionamiento Indirecto – Relativo a la Base + Indice
TBL_datos db 1,2,3
MOV AL,0xFFh Transfiere el valor guardado en AL al tercer
Byte de la tabla “TBL_datos”. La BIU calcula la
MOV BX,OFFSET TBL_datos dirección como:
MOV DI,2 BX = offset(TBL_datos)
MOV [BX][DI],AL Dir = DS:( BX + DI)
Direccionamiento Indirecto – Relativo a la Base + Indice
con desplazamiento
TBL_datos db 1,2,3 Transfiere el valor guardado en AL al tercer
Byte de la tabla “TBL_datos”. La BIU calcula la
MOV AL,0xFFh dirección como:
MOV BX,OFFSET TBL_datos BX = offset(TBL_datos)
MOV DI,1 Dir = DS:( BX + DI +1h)
MOV 1h[BX][DI],AL
Resumen
→
Los únicos registros que pueden ser utilizados para el direccionamiento son BX, BP, SI y
DI. Las combinaciones posibles para su uso se detallan a continuación.
Espacio de Entrada/Salida
Espacio de Entrada/Salida
→ El microprocesador 8086 posee también un
espacio de direcciones válido, adicional al mapa FFFFh
Pines de Alimentación:
➢ VCC (5V) y GND
Señal de Clock:
➢ El clock del 8086 dependiendo de su modelo podrá ser de 5MHz,
8MHz o 10MHz
➢ La señal deberá ser suministrada por un generador de clock
externo (8284A)
Bus de Direcciones:
➢ 20 líneas / pines (AD0 a AD15 y A16 a A19)
Bus de Datos:
➢ 16 líneas / pines (AD0 a AD15)
el Bus de Datos.
➢ Para su utilización se requiere la multiplexación Temporal de los
Pin de RESET:
➢ Manteniendo durante cuatro ciclos de clock este pin en un nivel ALTO
pines 24 al 31.
Pin #BHE (Byte High Enable):
➢ Habilita la escritura de la parte alta del bus de datos del 8086 bit 8 a bit
15.
Pin READY:
➢ Se emplea para introducir estados de espera (Wait-State) en los ciclos de
microprocesador.
Single Processor
producirá que el microprocesador mode
se reinicie. Multiprocessor mode
➢ Cuando el microprocesador se reinicia comienza a ejecutar instrucciones
El 8086
en la dirección FFFF0h del es responsable
espacio de memoria. de generar Un Controlador de Bus externo al
todas las señales de control para
➢ Se deshabilitan las interrupciones. 8086 será responsable de generar
Pin MN/#MX (Selección los accesos
de Modo a memoria
Máximo y I/O.
o Mínimo): todas las señales de control para
➢ Un nivel ALTO en este pin seleccionará el modo Mínimo. los accesos a memoria y I/O.
➢ Un nivel BAJO en este pin seleccionará el modo Máximo.
Aplicaciones simples Aplicaciones complejas
➢ Dependiendo del modo seleccionado, se dará función específica a los
pines 24 al 31.
No es posible la conexión de un
Pin #BHE (Byte High Enable): Procesadores adicionales pueden
procesador adicional ser conectados Ej. 8087 ( Co-
➢ Habilita la escritura de la parte alta del bus de datos del 8086 bit 8 a bit
microprocesador.
Pin de #RD:
➢ Este pin de salida cuando está en un nivel BAJO indica que el
Pin M/#IO:
➢ Este pin de salida indica si la operación de lectura/escritura se realizará
con los dispositivos del mapa de memoria (nivel ALTO) o con los
dispositivos del mapa de Entrada/Salida (nivel BAJO).
Pin DT/#R:
➢ Este Pin de salida indica si el microprocesador se encuentra
al microprocesador.
➢ La solicitudes de interrupciones que ingresen por este pin podrán ser
del flag IF, por lo que cualquier pedido de interrupción que ingrese por este
pin no podrá ser enmascarado.
➢ Esta entrada utiliza el vector de interrupción 2.
Pines X1 y X2:
➢ Pines de conexión para el oscilador a cristal de la frecuencia correcta.
Pin EFI:
➢ Entrada externa de clock. Esta entrada puede utilizarse como fuente de
microprocesador.
➢ Cuando #AEN tiene un valor bajo y RDY un valor alto, se activará en
Pin CSYNC:
➢ Entrada de sincronización de la señal de clock EFI. Si se utiliza el
Pin #ASYNC:
➢ Es una entrada que permite seleccionar una o dos etapas de
Aplicación típica del 8284A para la generación de las señales de Clock y Reset del microprocesador
PCLK 2.5MHz
PCLK
15MHz
OSC
Bus de Control
● M/IO: Memoria o
Entrada/Salida
● #RD: Lectura (READ)
74LS245 – Transceiver
(bidireccional) con salida de
tres estados.
Este tipo de configuración es
requerido cuando las
memorias o periféricos son
lentos.
DIR Direction
1:
0:
è
Gracias!