You are on page 1of 9

Facultad de Ingeniera Sistemas

y Electrnica

LABORATORIO No. 1
ARQUITECTURA DEL 8086 DE INTEL Y LENGUAJE ENSAMBLADOR

OBJETIVOS:
-

Estudio de la arquitectura del Microprocesador 8086 de Intel y su lenguaje


ensamblador.

Codificacin en ensamblador de un programa que calcule el promedio de notas de


un curso, haciendo uso de la herramienta Emu8086.

FUNDAMENTO TEORICO

INTRODUCCIN
En junio de 1978 Intel lanz al mercado el primer microprocesador de 16 bits: el 8086. Al
ser el 8086 un microprocesador de 16 bits esto significa que cuenta con un bus de datos
de 16 bits y que trabaja con registros internos de este mismo tamao. Otra de las
caractersticas de este microprocesador es su capacidad de direccionar hasta 1Mb de
memoria.
La importancia del 8086 se debe a que fue elegido por IBM para desarrollar el Personal
Computer, que fue tomado como estndar por casi todos los fabricantes de ordenadores.
Posteriormente Intel fabric sucesivamente el 80186, el 80286, el 80386, el i486 y los
Pentiums, manteniendo la compatibilidad software con los anteriores, es por ello la
denominacin x86 a esta familia Intel.
EL MICROPROCESADOR
En el corazn del sistema computacional basado en microprocesador est el circuito
integrado del microprocesador. Este elemento, que algunas veces es denominado como
CPU (Unidad Central de Proceso), es el elemento de control en un sistema
computacional. El microprocesador controla la memoria y la E/S a travs de una serie de
conexiones llamadas buses. Los buses seleccionan un dispositivo de E/S (Entrada/Salida)
o de memoria, transfieren datos entre un dispositivo de E/S o la memoria y el
microprocesador, y controlan el sistema E/S y de memoria.

Ing. Pedro Aberga Farro

ARQUITECTURA DEL 8086

En la Figura 1 pueden observarse 2 unidades fundamentales:


-

La Execution Unit, encargada de la ejecucin de las instrucciones.


La Bus Interface Unit, encargada de la gestin de direccionamiento para la
memoria y de obtener las instrucciones y cargarlas en la Instruction Queue

Las unidades indicadas cuentan con distintos bloques distintivos, tal como puede
observarse en la siguiente figura:

Figura 1. Diagrama de bloques del CPU 8086

Ing. Pedro Aberga Farro

A continuacin se presenta otra representacin en bloques para la arquitectura del 8086:

Figura 2. Representacin en diagrama de bloques del 8086


DESCRIPCIN DE PINES DEL 8086
En las Figuras 3 y 4 se observan 2 representaciones equivalentes del 8086.

U2
21
22
24
18
31
30
23
17
33
19

RESET
AD[0..15]
READY
A[16..19]
INTA/QS1
INTR
ALE/QS0
HOLD/GT1
BHE
HLDA/GT0 DT/R/S1
TEST
DEN/S2
NMI
RD
MN/MX
WR/LOCK
CLK
M/IO/S0

25
34
27
26
32
29
28

U1
6
5
7

SCL
SDA
WP

A1

AT24C1024

8086

Figura 3. Representacin en Proteus del 8086.

Ing. Pedro Aberga Farro

Figura 4. Representacin del 8086 en su datasheet.


El 8086/8088 (8088 es similar al 8086 slo que cuenta con bus de 8 bits) puede
conectarse al circuito de dos formas distintas: el modo mximo y el modo mnimo. El
modo queda determinado al poner un determinado terminal (llamado MN/MX) a tierra o a
la tensin de alimentacin. El 8086/8088 debe estar en modo mximo si se desea trabajar
en colaboracin con el Procesador de Datos Numrico 8087 y/o el Procesador de
Entrada/Salida 8089 (de aqu se desprende que en la IBM PC el 8088 est en modo
mximo). En este modo el 8086/8088 depende de otros chips adicionales como el
Controlador de Bus 8288 para generar el conjunto completo de seales del bus de control.
El modo mnimo permite al 8086/8088 trabajar de una forma ms autnoma (para
circuitos ms sencillos) en una manera casi idntica al microprocesador 8085.
Los 40 pines del 8086 en modo mnimo tienen las siguientes funciones:
1) GND (Masa)
2) A14 (Bus de direcciones)
3) A13 (Bus de direcciones)
4) A12 (Bus de direcciones)
5) A11 (Bus de direcciones)
6) A10 (Bus de direcciones)
7) A9 (Bus de direcciones)
8) A8 (Bus de direcciones)
9) AD7 (Bus de direcciones y datos)
10) AD6 (Bus de direcciones y datos)
11) AD5 (Bus de direcciones y datos)
12) AD4 (Bus de direcciones y datos)

Ing. Pedro Aberga Farro

13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
25)

AD3 (Bus de direcciones y datos)


AD2 (Bus de direcciones y datos)
AD1 (Bus de direcciones y datos)
AD0 (Bus de direcciones y datos)
NMI (Entrada de interrupcin no enmascarable)
INTR (Entrada de interrupcin enmascarable)
CLK (Entrada de reloj generada por el 8284)
GND (Masa)
RESET (Para inicializar el 8088)
READY (Para sincronizar perifricos y memorias lentas)
/TEST
/INTA (El 8088 indica que reconoci la interrupcin)
ALE (Cuando est uno indica que salen direcciones por AD, en caso contrario, es
el bus de datos)
26) /DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y 8287
(se conecta al pin de "output enable"), esto sirve para que no se mezclen los datos
y las direcciones).
27) DT/R (Data transmit/receive: se conecta al pin de direccin de los chips recin
indicados).
28) IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria)
29) /WR (Cuando vale cero hay una escritura)
30) HLDA (Hold Acknowledge: el 8088 reconoce el HOLD)
31) HOLD (Indica que otro integrado quiere aduearse del control de los buses,
generalmente se usa para DMA o acceso directo a memoria).
32) /RD (Cuando vale cero hay una lectura)
33) MN/MX (Cuando esta entrada est en estado alto, el 8088 est en modo mnimo,
en caso contrario est en modo mximo)
34) /SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del 8088)
35) A19/S6 (Bus de direcciones/bit de estado)
36) A18/S5 (Bus de direcciones/bit de estado)
37) A17/S4 (Bus de direcciones/bit de estado)
38) A16/S3 (Bus de direcciones/bit de estado)
39) A15 (Bus de direcciones)
40) Vcc (+5V)
En modo mximo (cuando se aplica +5V al pin 33) hay algunos pines que cambian de
significado:
24) QS1: Estado de la cola de instrucciones (bit 1).
25) QS0: Estado de la cola de instrucciones (bit 0).
26) S0: Bit de estado 0.
27) S1: Bit de estado 1.
28) S2: Bit de estado 2.
29) /LOCK: Cuando vale cero indica a otros controladores del bus (otros
microprocesadores o un dispositivo de DMA) que no deben ganar el control del bus. Se
activa ponindose a cero cuando una instruccin tiene el prefijo LOCK.
30) RQ/GT1: Es bidireccional y tiene la misma funcin que HOLD/HLDA en modo
mnimo.
31) RQ/GT0: Como RQ/GT1 pero tiene mayor prioridad.
34) Esta salida siempre est a uno.

Ing. Pedro Aberga Farro

Las seales M/IO, /WR, /INTA, ALE, DT/R, /DEN, HOLD y HLDA son exclusivas del modo
mnimo. Las seales S0-S2, RQ/GT0, RQ/GT1, /LOCK y QS0-QS1 solo estn disponibles
en modo mximo
LENGUAJE ENSAMBLADOR
Estructura de un programa ensamblador
Un programa fuente en ensamblador contiene dos tipos de sentencias: las instrucciones
y las directivas. Las instrucciones se aplican en tiempo de ejecucin, pero las directivas
slo son utilizadas durante el ensamblaje.
1) Formato de una sentencia de instruccin:
[etiqueta] nombre_instruccin [operandos] ;[comentarios]
Los corchetes, como es normal al explicar instrucciones en informtica, indican que lo
especificado entre ellos es opcional, dependiendo de la situacin que se trate.
Campo de etiqueta: Es el nombre simblico de la primera posicin de una instruccin,
puntero o dato. Consta de hasta 31 caracteres que pueden ser las letras de la A a la Z, los
nmeros del 0 al 9 y algunos caracteres especiales como @, _, . y $. Reglas:
Si se utiliza el punto ., ste no debe colocarse como primer carcter de la
etiqueta. El primer carcter tampoco puede ser un dgito.
No se pueden utilizar los nombres de instrucciones o registros como nombres de
etiquetas.
Las etiquetas son de tipo NEAR cuando el campo de etiqueta finaliza con dos
puntos (:), quiere esto decir que la llamada est dentro del mismo segmento de
cdigo (llamadas intrasegmento) y el procesador slo carga el puntero de
instrucciones IP.
Las etiquetas son de tipo FAR si el campo de etiqueta no termina con los dos
puntos (:). En estas etiquetas la instruccin a la que apunta no se encuentra en el
mismo segmento de cdigo sino en otro. Cuando es referenciada en una
transferencia de control se carga el puntero de instrucciones IP y el segmento de
cdigo CS (llamadas intersegmento).
Campo de nombre: Contiene el mnemnico de las instrucciones (Ej. MOV, ADD, etc) o
bien una directiva (Ej. EQU, DB, DW, etc) de las que veremos ms adelante.
Campo de operandos: Indica cuales son los datos implicados en la operacin. Puede
haber 0, 1 2; en el caso de que sean dos al 1 se le llama destino y al 2 (separado por
una coma) fuente.
MOV AX, [DI]

; AX => destino y [DI] => origen o fuente

Campo de comentarios: Cuando en una lnea hay un punto y coma (;) todo lo que sigue
en la lnea es un comentario, resulta de gran utilidad para realizar futuras modificaciones
al mismo.

Ing. Pedro Aberga Farro

2) Formato de las DIRECTIVAS


La sintaxis de una sentencia directiva es muy similar a la de una sentencia de instruccin:
[nombre] nombre_directiva [operandos] ; [comentario]
Slo es obligatorio el campo nombre_directiva; los campos han de estar separados por
al menos un espacio en b lanco. La sintaxis de nombre es anloga a la de la etiqueta
de las lneas de instrucciones. El campo de comentario cumple tambin las mismas
normas.
Directivas de definicin de datos:
DB (define byte), DW (define palabra), DD (define doble palabra), DQ (define
cudruple palabra), DT (define 10 bytes): Sirven para declarar las variables,
asignndolas un valor inicial. Ejemplo:
dato
mes
numero

DW 2000
DB
08
DD 12345678h

Con el operando DUP pueden definirse estructuras repetitivas. Por ejemplo, para asignar
100 bytes a cero y 25 palabras de contenido indefinido (no importa lo que el ensamblador
asigne):
ceros DB 100 DUP (0)
matriz DW 25 DUP (?)
Se admiten tambin los anidamientos. El siguiente ejemplo crea una tabla de bytes
donde se repite 50 veces la secuencia 1, 2, 3, 7, 7:
tabla DB 50 DUP (1, 2, 3, 2 DUP (7))
Directivas de definicin de smbolos:
EQU (EQUivalence): Asigna el valor de una expresin a un nombre simblico fijo:
olimpiadas EQU

1992

Donde olimpiadas ya no podr cambiar de valor en todo el programa.


= (signo '='): Asigna el valor de la expresin a un nombre simblico variable:
Anlogo al anterior pero con posibilidad de cambiar en el futuro. Muy usada en
macros (sobre todo con REPT).
num = 19
Directivas de control del ensamblador:
ORG (ORiGin): Puede usarse esta directiva para cambiar el contenido del
contador de localidades de un segmento de datos o cdigo. En los programas
COM (que se cargan en memoria con un OFFSET 100h) es necesario colocar al

Ing. Pedro Aberga Farro

principio un ORG 100h, y un ORG 0 en los controladores de dispositivo (aunque si


se omite se asume de hecho un ORG 0).
END [expresin]: indica el final del fichero fuente. Si se incluye, expresin indica el
punto donde arranca el programa. Puede omitirse en los programas EXE si stos
constan de un slo mdulo. En los COM es preciso indicarla y, adems, la
expresin (realmente una etiqueta) debe estar inmediatamente despus del ORG
100h.
EJMPLO:
; En el presente ejemplo se muestra el uso de las instrucciones MOV y MUL

Ing. Pedro Aberga Farro

INFORME FINAL

Ejercicio:
Desarrollar un programa en lenguaje ensamblador para el microprocesador 8086 que
calcule el promedio ponderado de 4 notas, cada una con diferente peso.
El programa debe contar con ingreso de datos por teclado (notas y pesos) y mostrar
resultados en consola.
Presentar en el informe final lo siguiente:
1) Fundamento terico breve, el cual debe contener: Introduccin, Concepto de
Registros de las 2 unidades principales del Microprocesador 8086, Concepto de
Interrupciones.
2) Algoritmo seguido para la solucin del ejercicio.
3) Alcances de la solucin dada, por ejemplo, si su programa calcula el promedio
considerando decimales o no.
4) Desarrollo del programa del ejercicio.
5) Indique un breve resumen de las Instrucciones e Interrupciones usadas.
6) Capturas de pantalla de los resultados obtenidos en el Emu 8086.
7) Conclusiones y Observaciones.
Observacin:
Para el uso del Emu8086, elegir la plantilla COM, tal como se muestra en la siguiente
figura:

Ing. Pedro Aberga Farro

You might also like