Está en la página 1de 9

INSTITUTO TECNÓLOGICO DE DURANGO

INGENIERIA MECATRÓNICA
MICROCONTROLADORES

DEPTO METAL-MECÁNICA

Docente:
M.C. Montesinos Meraz Jesús
Alumno:
Domínguez Estrada Emmanuel Esaú 14041138

Semestre y grupo:
7°U

Septiembre 2017
Durango, Dgo.
Microprocesador Intel 8086

El 8 de Junio de 1978, Intel presentó al público el chip 8086 (también conocido


como iAPX86), procesador que se convertiría en la base para el actual conjunto de
instrucciones de arquitectura x86, dando inicio a la historia moderna de las CPUs
de propósito general. Con frecuencias que bordeaban los 5 MHz en un principio,
ese número se logró duplicar para 1990, año en que el chip fue descontinuado por
la compañía.

Cerca de dos años de desarrollo tomó al equipo liderado por Bill Pohlman diseñar
el chip Intel 8086 de 40 pines y extensión completa de 16-bit, siendo el sucesor
directo de 8080, microprocesador de 8-bit construido en 1974 y que empezaba a
bosquejar los primeros intentos de un procesador de propósito general por parte
de Intel.

Stephen P. Morse, principal arquitecto del proyecto 8086, comentó que las
instrucciones en el nuevo diseño de Intel tendrían mejor relación con algunos
lenguajes de más alto nivel de la época (Pascal, PL/M) y no tanta implicancia con
el compilador. La contratación de Morse en el proyecto dio bastante que hablar, ya
que era un Ingeniero de Software que tenía una visión totalmente distinta sobre el
diseño de CPUs, la que había estado dominada por Ingenieros de Hardware:

La verdadera identidad de 8086 se establece en sus registros y buses (interno,


externo) de 16-bit, lo que permite un direccionamiento I/O de 64 KB (2 16 = 65.536),
mientras el bus externo de 20-bit permitía un direccionamiento físico de 1 MB.

INSTRUCCIONES (Transferencia de datos)

IN carga el acumulador desde un dispositivo de I/O


LAHF carga los flags en AH
LEA carga una dirección efectiva
LDS carga DS y un registro de 16 bits con datos de memoria de 32 bits
LES carga ES y un registro de 16 bits con datos de memoria de 32 bits
MOV carga byte o palabra o doble palabra
OUT saca datos del acumulador a un puerto de I/O
POP recupera una palabra de la pila
POPF recupera los flags de la pila
PUSH almacena una palabra en la pila
PUSHF almacena los flags en la pila
SAHF carga AH en los flags
XCHG intercambia bytes o palabras
XLAT emplea AL para entrar a una tabla de conversión
(Operaciones Aritméticas)
AAA, AAD, AAM, AAS ajuste ASCII para suma, división, producto y resta
ADD suma datos entre registros o la memoria y otro registro
ADC suma con acarreo
CBW convierte byte a palabra
CMP compara los datos
CWD convierte palabra a doble palabra
DAA, DAS ajuste decimal en AL para una suma/resta en BCD
DEC decrementa operando en 1
DIV división sin signo
IDIV división con signo
IMUL multiplicación con signo
INC incrementa operando en 1
MUL multiplicación sin signo
NEG cambia el signo
SBB resta con acarreo
SUB resta datos entre los registros y la memoria u otro reg.
(Manipulación de bits)

AND Y lógica
NOT invertir (complemento a 1)
OR O lógica
SAR desplazamiento aritmético a derecha
SHL/SAL desplazamiento a izquierda
SHR desplazamiento lógico a derecha
RCL rotación a la izquierda con acarreo
ROR rotación a izquierda
RCR rotación a derecha con acarreo
ROR rotación a derecha
TEST operación con el AND lógico pero sólo afecta banderas
XOR O exclusivo
(Cadenas)

CMPS comparación entre 2 cadenas en memoria


LODS cargar el acumulador con un dato de una cadena
MOVS mover cadena de memoria a memoria
SCAS comparación entre los datos de una cadena y el acumulador
STOS almacenar el acumulador

(Transferencia de programa)
CALL llamada a subrutina
INT interrupción de software
INT 3 interrupción 3
INTO interrupción si hay overflow
IRET retorno de una rutina de interrupción
JA, JAE, JB, JBE saltar si mayor, mayor o igual, menor, menor o igual
JE/JZ saltar si es cero o igual
JG, JGE, JL, JLE saltar si mayor, mayor o igual, menor, menor o igual
JMP salto incondicional
JNE/JNZ saltar si no es igual o no es cero
JNC, JNO, JNP, JNS saltar si no acarreo, overflow, paridad, signo
JC, JO, JP, JS saltar si acarreo, overflow, paridad, signo
LOOP repite un ciclo CX veces
LOOPE, LOOPNE igual a la anterior pero termina prematuramente por
Z=1, 0
JCXZ saltar si CX es 0
RET retorno de subrutina

(Control del procesador)


CLC borrar acarreo
CLD habilitar incremento automático
CLI deshabilitar terminal INTR
CMC complementar acarreo
HLT alto hasta que se reinicialice o exista interrupción
NOP no operación
STC activa acarreo
STD habilitar decremento automático
STI habilitar interrupciones
WAIT espera a que el terminal TEST=0
LOCK controla el terminal LOCK
ARQUITECTURA INTERNA A BLOQUES DEL INTEL 8086

Este microprocesador está dividido en dos sub-procesadores. Por un lado está la


“Unidad de Ejecución” (EU) encargada de ejecutar las instrucciones, la cual posee
una ALU (unidad aritmético-lógica) con un registro de estado con varios flags
asociados y un conjunto de registros de trabajo, y por otro está la “Unidad de
Interfaz de bus” (BIU) encargada de la búsqueda de las instrucciones, ubicarlas en
la cola de instrucciones antes de su ejecución y facilitar el direccionamiento de la
memoria, es decir, encargada de acceder a datos e instrucciones del mundo
exterior. El 8086 contiene 14 registros de 16 bits, de los cuales, unos pertenecen a
la EU, que normalmente se suelen usar para direccionamiento, y otros pertenecen
a la BIU.
Los registros del 8086 podrían clasificarse en tres grupos de acuerdo con sus
funciones. El grupo de datos, que es esencialmente el conjunto de registros
aritméticos; el grupo de apuntadores, que incluye los registros base e índices y
también el contador de programa y el puntero de pila; y el grupo de registros de
segmento, que es un conjunto de registros base de propósito especial.

El grupo de registros de datos o registros generales son registros de 16 bits,


pudiéndose usar cada uno de ellos como dos registros de 8 bits. Aun siendo
registros de uso general tiene asignadas unas operaciones específicas. Así, por
ejemplo, el AX es el acumulador de 16 bits y usándolo a veces provoca que el
ensamblador produzca un lenguaje máquina codificado en muy pocos octetos. Se
emplea en multiplicaciones, divisiones, entradas/salidas, etc.; el registro BX, se
utiliza como registro base para el direccionamiento de memoria; el registro CX, se
utiliza como contador y almacenaje de datos y el registro DX, se utiliza para
almacenar datos de 16 bits. Puede pensarse que es una extensión del registro AX
para multiplicaciones y divisiones con 16 bits. Otra de funciones específicas es
para almacenar la dirección de E/S durante algunas operaciones de E/S.
El grupo de apuntadores, es decir, punteros e índices está formado por los
registros IP, SP, BP, SI, DI.
El grupo de apuntadores, es decir, punteros e índices está formado por los
registros IP, SP, BP, SI, DI.
Los registros puntero son dos:
·** IP como registro puntero de instrucciones conocido principalmente como
contador de programa. Este contiene un valor de 16 bits que es un
desplazamiento sobre la dirección del registro CS (segmento de código) que más
adelante detallaremos.
· **SP como registro de pila. El registro BP actúa como base de la dirección de la
pila.
Los registros puntero de instrucciones (IP) y puntero de pila (SP) se encargan del
control de flujo del programa.
Los registros SI y DI actúan como índices asociados al registro DS (segmento de
datos).
El grupo de registros de segmento está formado por los registros CS, SS, DS y
ES.
· CS (segmento de código).
· DS (segmento de datos).
· SS (segmento de pila).
· ES (segmento extra).
La importancia de dichos registros queda reflejada en la estructura de la memoria
con la técnica de segmentación, que principalmente radica en el que el espacio
total de memoria se divide en trozos de 64K bytes, que reciben el nombre de
“segmentos”.
Aparte de todos estos registros, el 8086 consta de un registro de estado de estado
de 16 bits, aunque algunos de ellos no se utilizan. Cada uno de los bits se
denomina indicador o flag, que generalmente, se modifican por las operaciones
lógicas y aritméticas.
Estos indicadores son:
· SF (indicador de signo).
· ZF (indicador de cero).
· PF (indicador de paridad).
· CF (indicador de acarreo).
· AF (indicador de acarreo auxiliar).
· OF indicador de desbordamiento).
· DF (indicador de dirección).
· IF (indicador de interrupción).
· TF (indicador de trap).
RANKING DE PRINCIPALES FABRICANTES DE MICROPROCESADORES