Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
M DULO
El 8086 en la Base de las Microcomputadoras:
Gua Didctica para el curso de
Microcomputadoras I.
Responsable:
NDICE
Introduccin ................................ ................................ .......................... 5
INTRODUCCIN
Muchas cosas importantes para los seres humanos son realizadas
por dispositivos electrnicos llamados computadoras , las cuales han
invadido nuestra vida diaria a tal punto que, en muchos lugares, no s e
puede realizar labor alguna si no se cuenta con una computadora. Hay
ambientes crticos en donde sera imposible trabajar si no existe una
computadora que controle los procesos.
OBJETIVOS
OBJETIVO GENERAL
OBJETIVOS ESPECFICOS
P er i fr ico s
T eclad o UNI D AD
Mo n ito r P RI N CI P AL
I mp r eso r a DE L
DISCOS - Ma g n tico s.
Mo u s e SI ST EM A
- p t ico s.
Sca n n er
RO M R AM
N
P er i fr ico s
CP U T eclad o
Mo n ito r
I mp r eso r a
Mo u s e
MD U LOS Sca n n er
DE E /S
DI S C OS
n o d o
Tubo de vacio
C T O DO :
T ub o d el g ad o q ue
cu a nd o se c al ie n ta
Rej i ll a e mit e e lec tr o ne s.
En to nce s, d ic ho s
elec tr o ne s lo s r ec ib e el
no d o p r o d uci e nd o u n
Cp s u la d e v id r io f l uj o d e e lec tr o ne s.
al va cio
Operaciones
Matemticas
Almacenar Entradas y
en Memoria Salidas
(E/S)
Control
Para los datos que tienen caracteres se utiliza una tabla indizada ,
cuyo contenido se ha estandarizado, en la que cada caracter ocupa un lugar
preestablecido y su manipulacin se realiza a travs de dicho ndice o valor
ordinal. La tabla ms comn es l a tabla ASCII, cuyo contenido se maneja
con un byte, representando hasta 256 elementos; pudindose utilizar
tambin la tabla UNICODE, que manejada con dos bytes llega a contener
65536 elementos, y que incorpora a la tabla ASCII dentro de si.
Mover AX, 10
REGISTROS
ALU
U. C.
Nombre de la Caractersticas
Bandera (Bit)
Memoria Registros
Registro Registro
Instruccin MOV
Ejemplos:
MUL BL multiplicacin de 8 bits AX = AL * BL
MUL BX multiplicacin de 16 bits DXAX = AX * BX
MUL CH se multiplica el valor de CH por AL
Trabajando con direcciones de memoria se debe especificar si se
trata de un byte (8 bits) o de una palabra (16 bits):
MUL Word PTR [0018] tamao: la palabra
MUL Byte PTR [0018] tamao: un byte
d) Instruccin para Dividir:
Ejemplos:
DIV BL AL = AX / BL cociente 8 bits
AH = AX % BL residuo
DIV CX AX = DX AX / CX cociente 16 bits
DX = DX AX % CX residuo
Si el cociente excede la capacidad del registro receptor, entonces
se producir un desbordamiento por divisin.
Ejemplos:
CMP AH, BL ; registro a registro
CMP AL, 5h ; registro con un valor
CMP BX, [108h] ; registro con un lugar de memoria
CMP BYTE PTR [0Ah], 1Eh ; un lugar de memoria con un valor
Por lo general, las instrucciones de comp aracin van seguidas de
instrucciones de salto que actuarn segn el resultado de la comparacin.
Ejemplos:
JMP 240h ; 240h es el desplazamiento en el segmento de cdigo.
; CS:240 Direccin Real a la cual salta el programa.
JMP [0F3h] ; lugar de memoria que corresponde al segmento de
; datos, donde se guarda el desplazamiento a donde
; debe saltar en el segmento de cdigo.
JMP BX ; BX contiene el desplazamiento.
; CS:BX es la Direccin Real.
JMP [BX] ; CS:[DS : BX] es la Direccin Real.
Ejemplo:
MOV AX, [5Ah] ; carga un valor de memoria en AX
CMP AX, 3h ; compara con 3
JA BX ; salta a CS:BX si el valor cargado en AX es mayor a 3
ADD CX, DX ; Se ejecuta si la condicin es falsa.
Sintaxis: RET
Sintaxis: IRET
DS = 0D103h BX = 05B3h
IP = 025Fh CX = 3E07h
Determinar:
a) Direccin Inicial real del segmento de cdigo.
b) Direccin final real del segmento de cdigo.
c) Como se expresa la direccin real 57AE5h del segmento de cdigo.
d) Cual es la direccin real de la siguiente instruccin a ejecutarse.
e) Cual es la direccin real de CS:[BX]
f) Cual es la direccin real de CS:BX
Por ejemplo:
ASSUME CS: codigo
Comentarios: son lneas de texto ubicadas en el cdigo fuente
que el lenguaje ensamblador ignora. Son tiles para el programador, ya que
permiten colocar mensajes que le guiaran en la comprensin del programa.
Los comentarios se ponen despus de un punto y coma (;), as:
; este es un comentario
Etiquetas: Son palabras que se usan para indicar el inicio de una
parte del programa, son nombres que se usan para representar direccione s
de una instruccin en el cdigo. Estas direcciones pueden ser cercanas o
lejanas segn se encuentren en el mismo segmento o en segmento diferente.
Por ejemplo:
X DB 5 ; define un byte con valor inicial 5
Z DW ? ; define Word sin valor inicial.
Y DD ? ; define Double Word.
Palabras Reservadas: son palabras que el lenguaje ensamblador
reconoce como propias, y que no se pued en usar como variables. Entre ellas
podemos mencionar:
FAR: indica que una etiqueta es lejana, o sea que la direccin que
representa est en otro segmento.
codigo SEGMENT
Assume CS: codigo, DS: datos
comienzo: MOV AX, Datos
MOV DS, AX
MOV AX, a
MOV BX, b
ADD AX, BX
MOV c, AX
codigo ENDS
END comienzo
A continuacin, se define el segmento que contendr el cdigo
del programa, donde se coloca la directiva que establecer las direcciones
de inicio de los respectivos segmentos.
a) Funcin de Apilamiento:
PUSH valor (de 16 bits)
Con la instruccin PUSH ponemos el valor que se pa sa como
parmetro en la cima de la pila. El valor puede encontrarse en un registro o
en memoria. Por ejemplo si hacemos lo siguiente:
MOV AX, 3
PUSH AX
Primero se debe saber que al efectuarse esta instruccin el valor
del registro SP disminuye automticamente su valor en 2 unidades y luego
se pone el dato en la direccin que contiene SS:SP; por lo tanto, en la cima
de la pila estar el valor 3 en un campo de 16 bits , apuntado por SP .
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 41
Mdulo del Curso Microcomputadoras I DAIINFO FII.
b) Funcin de Desapilamiento :
POP destino (de 16 bits)
Con la instruccin POP sacamos el dato que se encuentra en la
cima de la pila y lo ponemos en el lugar sealado como destino que se est
usando para efectuar esta operacin. Por ejemplo, si hacemos lo siguiente:
MOV BX, 5
PUSH BX
POP AX
Al efectuarse esta instruccin, e l valor que contendr el registro
AX ser 5, incrementndose automticamente el valor del registro SP en 2
unidades. El desapilamiento puede hacerse hacia un registro o a un lugar de
memoria.
III.3.- SUBRUTINAS
Una subrutina es un conjunto de instrucciones de un programa
agrupadas de tal manera que realizan una tarea especfica , evitando la
duplicidad de cdigo. Una subrutina puede ser invocada desde cualquier
parte del programa donde se le necesite . En general, aquellas subrutinas
que retornan valores se llaman fun ciones y las que no lo hacen se llaman
procedimientos. En Assembler no hay distincin al respecto y se las trata
por igual siendo responsabilidad del programador la devolucin de valores .
- Creacin: 3Ch
- Apertura: 3Dh
- Cierre: 3Eh
- Lectura: 3Fh
- Escritura: 40h
0 = Lectura
1 = Escritura
2 = Lectura / Escritura
MOV AL, 2
d) Luego llamamos al DOS para que efecte la operacin:
INT 21H
e) Verificamos con el Carry Flag si la operacin se realiz con
xito o no. En caso de error se invoca a una rutina que se
encargue de procesar dicho error :
JC rut_error
f) Si el archivo se logr abrir satisfactoriamente, se guardar el
descriptor del archivo en una variable:
MOV descriptor, AX
III.5.- INTERRUPCIONES.
Son mecanismos mediante los cuales se solicita al procesador que
deje de hacer lo que est haciendo para dar atencin a la solicitud de una
tarea en especial. El microprocesador usa las interrupciones no slo para
atender las solicitudes de los dispositivos, si no tambin como un
mecanismo para proveer un conjunto de rutinas del sistema, BIOS, video,
DOS, etc. a los programas de usuario. Cuando la interrupcin es atendida,
se invoca a una rutina llamada Manejador de Interrupcin (interrupt
handler) que realiza la labor solicitada.
INT 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh: Puertos serie, impresora y
controladores de disquete.
INT 70h, 71h, 72h, 73h, 74h, 75h, 76h, 77h : Generadas en los
computadores AT y mquinas superiores por el segundo chip controlador de
interrupciones.
Algunas interrupciones del DOS son: 20h, 22h, 23h, 24h, 25h,
26h, 27h, 28h, 29h. Pero la fundamental es la interrupcin 21h por medio
de ella es posible hacer casi to do lo necesario para poner un programa en
marcha.
c) Salvar CS en la pila.
d) Salvar IP en la pila.
a) Recuperar IP de la pila.
b) Recuperar CS de la pil a.
PROGRAMA RESIDENTE
X = A * (B C) + C / D
CPU
8086
IOP PERIFRICOS
8089
B U S D E C O N T R O L
B U S D E D I R E C C I O N E S
B U S D E D A T O S
-CS 1 15 VCC
-WR 2 16 A0
-RD 3 17 -INTA
D7 4 18 IR7
D6 5 19 IR6
D5 6 20 IR5
D4 7 8259 21 IR4
D3 8 22 IR3
D2 9 23 IR2
D1 10 24 IR1
D0 11 25 IR0
C AS 0 12 26 INT
C AS 1 13 27 -SP/-EN
GND 14 28 C AS 2
-INTA INT
LGI C A D E CO NT R O L
8259
I.S.R. I.R.R. IR0
IR1
Lgica de IR2
IR3
(In Service Gestin de (Interrupt IR4
Register) Prioridad Request IR5
IR6
Register) IR7
LGI C A D E CO NT R O L
-RD Lgica de
-WR Lectura y
A0 Escritura 8259
-CS
LGI C A D E CO NT R O L
CAS0 Buffer de
CAS1 Cascada y
CAS2 Comparador 8259
-SP/-EN
b) Descripcin Funcional:
OLM y OLL son dos latch de 8 bits (OL significa Output Latch;
los subndices M y L estn relacionados con el byte ms y el menos
significativo, respectivamente); ambos son referenciados normalmente
como un conju nto denominado OL a secas. Estos latches siguen
normalmente la cuenta descendente de CE, pero la CPU puede enviar un
comando para congelarlos y poder leerlos; tras la lect ura continuarn
siguiendo a CE.
ANEXO
Un dispositivo as se
conoce como un microordenador o
una microcomputadora.
BIBLIOGRAFA.
Direcciones de Internet:
http://homepage.mac.com/eravila/asmix86.html
http://www.angelfire.com/co/jeanra/ens.html
http://win32asm.cjb.net
http://www.gui.uva.es/udigital
http://winapi.conclase.net/curso/index.php
http://www16.brinkster.com/eduroam/api/default.asp
http://azul2.bnct.ipn.mx/~computacion5/