Sei sulla pagina 1di 75

UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE INGENIERA INDUSTRIAL

DPTO. ACADMICO DE ING. INFORMTICA

M DULO
El 8086 en la Base de las Microcomputadoras:
Gua Didctica para el curso de
Microcomputadoras I.

Responsable:

Ing. Vctor Hugo Valle Ros, Mg.


Docente del Dpto. de Ing. Informtica FII.

Piura, Noviembre del 2012.


D EDICATORIA

Dedico la elaboracin de este Mdulo a


quienes me han apoyado siempre en la
realizacin de mis objetivos: mis
padres, Sergio Valle Bernab y Julia
Ros de Valle; a ellos, con todo el
cario del mundo.
Mdulo del Curso Microcomputadoras I DAIINFO FII.

NDICE
Introduccin ................................ ................................ .......................... 5

OBJETIVOS ................................ ................................ .......................... 7

I.- Computadoras y microprocesador. ................................ ................... 8

I.1.- Estructura de una Computadora ................................ .............. 8

I.2.- Evolucin histrica. ................................ ............................ 10


I.2.1.- Primera Generacin ................................ ................. 10
I.2.2.- Segunda Generacin ................................ ................ 13
I.2.3.- Tercera Generacin ................................ ................. 14
I.2.4.- ltimas Generaciones................................ .............. 15

I.3.- Formato de Datos. ................................ ............................... 16


I.3.1.- Representacin Binaria y Hexadecimal ..................... 16
I.3.2.- Representacin de Datos ................................ ......... 17

I.4.- Modos de direccionamien to. ................................ ................. 17

I.5.- Ejercicios de aplicacin. ................................ ...................... 18

II.- Arquitectura del 8086. ................................ ................................ .. 19

II.1.- Estructura del Microprocesador. ................................ ........... 19

II.2.- Conjunto de Instrucciones. ................................ ................... 25


II.2.1.- Instrucciones para Transferenci a de Datos ................ 26
II.2.2.- Instrucciones Aritmticas ................................ ........ 28
II.2.3.- Instruccin de Comparacin ................................ .... 30
II.2.4.- Instrucciones de Salto ................................ ............. 31
II.2.5.- Instrucciones para Incrementar y Decrementar .......... 32
II.2.6.- Instrucciones Para Uso de Procedimientos ................ 33

II.3.- Ejercicios de aplicacin. ................................ ...................... 34

III.- Funcionamiento del 8086. ................................ ............................. 35

III.1.- Programacin en Assembler. ................................ ................ 35


III.1.1.- Trminos Bsicos ................................ .................... 37
III.1.2.- Elaborando Programas ................................ ............. 39
III.1.3.- Funciones del DOS ................................ ................. 40
Elaborado por: Ing. Vctor H. Valle Ros, Mg. Pag. 3
Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.2.- Uso de Pilas. ................................ ................................ ....... 41


III.2.1.- Funciones de la Pila ................................ ................ 41

III.3.- Subrutinas ................................ ................................ .......... 43


III.3.1.- Uso de la Pila para el Paso de Parmetros ................. 44

III.4.- Manejo de archivos. ................................ ............................ 45


III.4.1.- Operaciones con Archivos ................................ ....... 46

III.5.- Interrupciones. ................................ ................................ .... 51


III.5.1.- Tipos de Interrupcin ................................ .............. 52
III.5.2.- Interrupciones del BIOS ................................ .......... 53
III.5.3.- Interrupciones del DOS ................................ ........... 54
III.5.4.- Interrupciones Definidas por el Programador ............ 54
III.5.5.- Programas Residentes en Memoria ........................... 56

III.6.- Ejercicios de aplicacin. ................................ ...................... 58

IV.- Componentes relacionados al 8086. ................................ ............... 59

IV.1.- Controlador de Entrada / Salida. ................................ ........... 59


IV.1.1.- Gestin de la E/S ................................ .................... 60
IV.1.2.- Procesador de E/S 8089 ................................ ........... 61

IV.2.- Manejo de Interrupciones ................................ ..................... 63


IV.2.1.- El Controlador de Interrupciones 8259 ..................... 64

IV.3.- Control del Tiempo ................................ ............................. 67


IV.3.1.- El Temporizador 8253 ................................ ............. 68

IV.4.- Otros Chips de Soporte ................................ ........................ 70


IV.4.1.- El Coprocesador Matemtico 8087 ........................... 70

IV.5.- Ejercicios de aplicacin. ................................ ...................... 71

ANEXO ................................ ................................ .............................. 72

Bibliografa. ................................ ................................ ....................... 75

Elaborado por: Ing. Vctor H. Valle Ros, Mg. Pag. 4


Mdulo del Curso Microcomputadoras I DAIINFO FII.

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.

En el interior de la computadora existen diversos conjuntos de


elementos fsicos (electrnicos y electromecnicos) que se encargan de
realizar y controlar todo lo que sucede en ella, siendo su component e
principal el microprocesador, el cual es la Unidad Central de Proceso
(CPU) de la computadora, encargada de ejecutar las instrucciones de los
programas; y de la cual se puede decir que es el cerebro de la computadora.

Es sabido que las computadoras traba jan en base a programas, los


cuales son conjuntos de instrucciones colocadas en secuencia lgica para la
realizacin de una tarea. Para que la computadora pueda ejecutar un
programa necesita que dicho programa se encuentre en un lenguaje tal que
pueda ser entendido por ella. Este lenguaje se conoce como lenguaje de
mquina, el cual est compuesto por ceros y unos agrupados de tal manera
que conforman cdigos que el microprocesador entiende y que resulta
tremendamente engorroso y comp licado para el ser human o.

Los programadores que trabajan a este nivel hacen uso de un


lenguaje que est cerca del lenguaje de mquina, pero que sea de fcil
manejo para ellos, este lenguaje se conoce como Assembler o lenguaje
ensamblador. Por su parte, l os programadores de aplic aciones utilizan
lenguajes que estn ms cerca del usuario para hacer sus programas, los
cuales son convertidos a lenguaje de mquina mediante un proceso de
compilacin, para que luego puedan ser ejecutados por el microprocesador.

Los microprocesadores han ido evolucionando con el tiempo


pasando de ser simples sumadores a realizar complejas operaciones de
control. En esta evolucin han ido aumentando su capacidad y su velocidad
de trabajo.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 5


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Los microprocesadores se implementan como millones de


componentes el ectrnicos discretos colocados en circuitos integrados
miniaturizados, dentro de una pastilla de material semiconductor que se
vincula con el exterior a travs de una serie de conectores metlicos en sus
costados.

El funcionamiento de los microprocesadores actuales es bastante


complejo, pero su comprensin se puede facilitar si se comienza el estudio
por un microprocesador ms sencillo y que en lneas generales cumple con
las mismas prestaciones bsicas que un microprocesador actual, nos
estamos refiriendo al microprocesador 8086, el cual se ubica casi en el
comienzo del camino hacia los actuales y potentes procesadores.

En nuestra universidad se dictan cursos referentes a los


microprocesadores en diferentes carreras, siendo Ingeniera Informtica
una de ell as, en la cual se enfoca su enseanza hacia su utilidad en esta
rea, notndose una carencia de material didctico sobre el tema que pueda
servir de gua tanto para los docentes como para los alumnos del curso y
que facilite su comprensin.

En el presente trabajo se pretende exponer las caractersticas


fundamentales del microprocesador 8086 en lo referente a su arquitectura
interna, su funcionamiento y su relacin con los elementos que deben
acompaarlo en una microcomputadora, para lo cual se incursionar en el
lenguaje Assembler como una herramienta para su manipulacin. Todo esto
colocado dentro de un marco acadmico que facilite a los estudiantes de
este tema entender lo bsico de un microprocesador y, a su vez, allanar el
camino para la profundizacin d e los conocimientos que lo lleven hacia la
comprensin de los microprocesadores actuales.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 6


Mdulo del Curso Microcomputadoras I DAIINFO FII.

OBJETIVOS

OBJETIVO GENERAL

Elaborar una gua didctica donde se exponga de manera clara y


concisa los conceptos bsicos de un microprocesador, basndonos en las
caractersticas del 8086.

OBJETIVOS ESPECFICOS

Se pretende presentar un panorama general sobre la constitucin


y forma de trabajo del microprocesador 8086, por lo que los siguientes
objetivos especficos nos conducirn a ello:

Presentar un panorama de la evolucin de las computadoras.

Mostrar la arquitectura del microprocesador 8086.

Explicar el funcionamiento del microprocesador 8086.

Mostrar los componentes relacionados con el microprocesador 8086.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 7


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.- COMPUTADORAS Y MICROPROCESADOR.

I.1.- ESTRUCTURA DE UNA COMPUTADORA


La computadora tal como la conocemos en la actualidad est
conformada por una variedad de dispositivos, algunos de los cuales son
imprescindibles para su funcionamiento, los que estn contenidos dentro de
la unidad principal del sistema; y otros son opcionales, y son conectados a
esta unidad, a los que se conoce como perifricos.

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

Algunos de estos componentes se colocan dentro de la unidad


principal del sistema, tales como las unidades de discos.

La computadora es un sistema, y como tal se le puede


descomponer en sus partes constitutivas para su estudio y comprensin,
descartando o dejando de lado aquellos elementos que no son relevantes
para nuestro anlisis. En nuestro caso nos ocuparemos s lo de los
elementos fundamentales del computador; considerando a la computadora
de la siguiente manera:
CP U : U n id ad C e ntr a l d e P r o ceso .
( Micr o p r o ce sad o r )
Me mo r i a.
COMPUTADORA: M d u lo s d e E/ S.
Si st e ma d e i n ter co ne xi n.
( B u se s d e l si s te ma)

Cada uno de estos componentes se implementa en la computadora


a travs de uno o ms circuitos integrados, los cuales son dispositivos
electrnicos con la forma de un ciempis, cuyas patas permiten
conectarlo a un circuito impreso. Los Circuitos Integrados contienen un
conjunto muy grande de componentes electrnicos colocados en una rea
muy pequea (hay millones de componentes lgicos en su interior) para
formar a los elementos del computador como los ya mencionados (por
ejemplo el microprocesador ).

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 8


Mdulo del Curso Microcomputadoras I DAIINFO FII.

El componente ms importante es la CPU el cual es considerado


como el cerebro de la computadora, todas las instrucciones que tiene que
procesar la computadora deben pasar por la CPU . Pero slo puede procesar
una instruccin a la vez, por lo que necesita de un soporte auxiliar don de
colocar las instrucciones qu e va a procesar y desde la cual las va a traer, y
a la cual va a llevar los resultados del procesamiento de una instruccin.
Este soporte auxiliar es tambin un dispositivo electrnico cuya labor es
mantener una cantidad relativamente grande de informacin, y es conocida
como la memoria de la computadora. Podemos mencionar dos tipos de
memoria dentro de la computadora: la memoria RAM y la memoria ROM.

La informacin que procesa la computadora debe ser ingresada


por algn lado y los resultados obtenidos deben ser enviados al exterior
tambin de alguna manera. Para ello se requiere de unos dispositivos
especiales que se encargarn d e dicha comunicacin. Estos disposit ivos se
conocen como los Mdulos de Entrada/Salida.

Estos componentes del computador necesitan establecer un canal


de comunicacin entre ellos para poder llevar y traer datos, instrucciones,
direcciones, seales de contr ol, etc. esto se realiza a travs de un sistema
de interconexin conocido como los Buses del Sistema.

En base a esto podemos esquematizar a la computadora de l a


siguiente manera:

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

La CPU trae instrucciones de la ROM cuando es necesario. De l a


RAM trae y lleva informacin, lo mismo que con los mdulos de E/S; los
cuales comunicaran a la computadora con el exterior.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 9


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.2.- EVOLUCIN HISTRICA.


Desde algunos siglos atrs se viene pensando en una mquina que
pueda efectuar clculos matemticos, grandes cientficos como Pascal,
Leibnitz, Hollerith y muchos otros se ubican en este camino. Babbage ide
su mquina analtica en base a engranajes y levas de alta precisin que la
tecnologa de la poca no era capaz de producir , por lo que fue imposible
su materializacin.

Recin por los aos '40, el Dr. Howard Aiken en la Universidad


de Harvard, presenta con el nombre de MARK I a la primera procesadora de
informacin, la cual trabajaba con componentes electromecnicos. Meda
16 metros de largo y 2.5 metros de alto, con un aproximado de 800,000
piezas y mas de 800 Km. de cableado elctrico, tenia un peso superior a 5
toneladas. Aun as los resultados eran impresionantes para la poca. Esta
mquina manejaba nmeros de hasta 23 dgitos, realizaba sumas en menos
de medio segundo, multiplicaciones en tres segundos y operaciones
logartmicas en poco ms de un minuto.

Es el desarrollo de la tecnologa l o que posibilit el surgimient o


de mquinas que tuvieran la capacidad de procesar datos. El
descubrimiento y uso de la electricidad permiti la creacin de la Mark I
basado en elementos electromecnicos , pero sera la electrnica la que le
dara la potencia que alcanza hoy en da el procesamiento de informacin .

El desarrollo de las computadoras se ha dividido por generaciones


para una mejor comprensin de su evolucin. Cada generacin se ha
establecido tomando como base el componente electrnico que posibilit su
existencia.

I.2.1.- Primera Generacin

La primera generacin se dio desde mediados de los '40 y en l a


dcada de los '50, las primeras computadoras se construyeron utilizando
dispositivos electrnicos que funcionaban dentro de bulbos o capsulas de
vidrio al vaco y cuya labor se asemejaba a la de una vlvula que regulaba
el paso de los electrones , de all su nombre de vlvula elect rnica.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 10


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Una vlvula electrnica est compuesta de varios electrodos y un


filamento que al calentarse provoca que se genere una nube de electrones
alrededor del ctodo que envuelve al filamento. El nodo conectado a un
potencial positivo atrae a los electro nes liberados por el ctodo,
provocando as una corriente continua de electrones.

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

Entre el ctodo y el nodo hay una rejilla que segn el voltaj e


que tenga dejar pasar ms o menos electrones hacia el nodo. Si la rejilla
tiene un potencial negativo entonces repele a los electrones del ctodo y no
les permite el paso de los electrones al nodo. La rejilla acta como una
llave reguladora en funcin del potencial que tenga.

Las mquinas de la primera generacin empleaban conjuntos mu y


grandes de bulbos para procesar informacin , en las cuales l os datos y
programas se ingresaban por medio de tableros enchufables.

El primer computador electrnico de uso general lo constituy l a


ENIAC (Electronic Numerical Integrator And Compute r), la cual fue
construida por J.P.Eckert y J .W.Mauchl y en la Universidad de
Penns ylvania, para aplicaciones matemticas en la segunda guerra mundial
como el tiro parablico. Mil veces ms veloz que las procesadoras
electromecnicas, pesaba 30 toneladas y ocupaba un espacio de 15000 pies
cuadrados y contena 18.000 bulbos, se programaba manualmente con
tableros cableados que contenan 6000 interruptores.

Esta maquina operaba en sistema decimal, no exista sistema


operativo ni lenguajes de programacin y cada programa se ocupaba del
hardware, el ingreso de cada programa requera de una gran cantidad de
tiempo. Adems requera una gran cantidad de energa, pero tenan gran
capacidad, rapidez, flexibilidad siendo muy superior a la MARK I.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 11
Mdulo del Curso Microcomputadoras I DAIINFO FII.

La dificultad de carga r un programa en la mquina condujo a la


idea de tener estos programas almacenados junto con los datos dentro del
computador, surgiendo la idea de Programa almacenado. A la par se
empezaron a desarrollar otras ideas como los ciclos de instruccin y el
desarrollo del trabajo en binario.

Es as como surge la IAS, presentada en 1952 por John Von


Newman, en la cual se plasman las siguientes ideas : Debe haber un
componente para las operaciones matemticas, otro para las entradas y
salidas, otro para llevar e l control y otro para almacenar los datos ; diseo
que tiene vigencia hasta la actualidad .

Operaciones
Matemticas

Almacenar Entradas y
en Memoria Salidas
(E/S)

Control

En 1950, Mauchl y y Eckert desarrollan la UNIVAC I (Universal


Automatic Computer) para la Sperry-Rand Corporation. Fue la primera
computadora comercial utilizada en un censo de los Estados Unidos y en
1952 se us para predecir la victoria de Dwight D. Eisenhower en las
elecciones presidenciales de los Estados Unidos. D espus del desarrollo de
esta mquina IBM construyo su modelo 701, una computadora cientfica
muy superior a la UNIVAC.

Las mquinas de la primera generacin u saban tubos al va co para


procesar la informacin, requieriendo de sistemas de refrigeracin para que
el equipo trabaje correctamente, teniendo una alta tasa de fallos.

Al final de esta genera cin empezaron a usarse tarjetas


perforadas para entrar los datos y los programas, empleandose tambin
cilindros magnticos para almacenar inf ormacin e instrucciones internas.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 12


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.2.2.- Segunda Generacin

El invento del transistor por los laboratorios Bell hizo posible


una nueva generacin de computadoras ms rpidas , confiables y ms
pequeas a mediados de los '50 por las compaas NCR y RCA,
siguindoles posteriormente la IBM con su serie 7000 .

Surge tambin la compaa Digital Equipment Corporation


(DEC), quien en 1957 comercializ su PDP -1, iniciando as el desarrollo de
las minicomputadoras.

Los transistores son dispositivos electrnicos elaborados con


material semiconductor de tamao reducido en comparacin con los tubos
de vaco, que no necesitaban de calentamiento previo para funcionar por lo
que se requera un menor sistema de refrigeracin para los equipos . Los
transistores cumplen con las mismas prestaciones que los tubos de vaco,
siendo de menor tamao, de menor costo y ms confiable s.

Las nuevas comput adoras utilizaban redes de ncleos magnticos


en vez de tambores giratorios para su almacenamiento interno y el escribir
un programa ya no requera entender plenamente el hardware de la
computadora debido a la aparicin de una serie de programas que se
encargaban de ello (software del sistema), apareciendo as los sistemas
operativos. La velocidad de las operaciones ya no se media en segundos
sino en microsegundos.

Empezaron a utilizarse otros elementos perifricos como cintas y


discos para el almacenamient o secundario; as como el uso intensivo de las
tarjetas perforadas para el ingreso de los programas y los datos a la
computadora.

Desde el punto de vista empresarial s e deba maximizar la


produccin incrementando el uso del sistema, por lo que se desarrollaban
trabajos por lotes. Tambin empieza a tomar cuerpo el concepto de familia
de computadoras, en la que los productos sucesivos de una famili a
suministran las mismas prestaciones que las originales pero mejoradas en
velocidad y capacidad.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 13


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.2.3.- Tercera Generacin

Se dio a partir de mediados de los aos '60, emergiendo con la


aparicin y desarrollo de los circuitos integrados , los cuales son
pequeas obleas de material semiconductor conteniendo un conjunto de
componentes electrnicos discretos, confor mantes de un circuito.

Estos circuitos integrados fueron en un primer momento de


pequea escala de integracin (SS I); es decir, solo contenan una pequea
cantidad de elementos discretos en su interior (en el orden de los cientos) .
Con el transcurrir del tiempo la tecnologa pudo colocar ms elementos en
su interior, pasando a una mediana escala de integracin y luego a escalas
superiores.

Con estos componentes, l as computadoras nuevamente se hicieron


ms pequeas, ms rpidas, desprendan menos calor ; y a su vez eran ms
eficientes, ms confiables y ms baratas.

Con estas mquinas se generaliz el uso de los lenguajes de


programacin de alto nivel y se mejoraron los sistemas operativos,
incluyndose en ellos diversas tcnicas como la multiprogramacin, el
tiempo com partido, el Manejo de colas de impresin , etc.

Ahora el equipo poda discernir entre diversos procesos que


realizaba simultneamente, atendiendo a varios usuarios al mismo tiempo .
La IBM 360 fue una de las primeras computadoras en usar circuitos
integrados, esta poda realizar tanto anlisis numrico como procesamiento
de archivos. La velocidad era tal que se poda correr ms de un programa
de manera simultnea.

En esta etapa s e desarrolla plenamente el concepto de familia de


computadoras; lo cual permite compartir software entre diversos equipos
debido a la compatibilidad entre las mquinas de una misma familia ,
permitiendo a las empresas adquirir mquinas segn su presupuesto para
luego, con el tiempo, cambiarlas por otras mejores .

Se impuls el desarrollo de las Mini Computadoras, las cuales


eran mquinas ms pequeas, mucho menos costosas de adquirir y de
operar. Estas se desarrollaron durante la segunda generacin pero
alcanzaron su auge entre 1960 y 1970.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 14
Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.2.4.- ltimas Generaciones

Las siguientes generaciones de computadoras se diluyen en los


ltimos tiempos, ya que se siguen usando los circuitos integrados como
elemento fundamental de las computadoras, pero con cada vez mayor escala
de integracin de componentes llegando a operar a escalas microscpicas,
obteniendo ms capacidad, ms velocidad y mejores prestaciones .

Estos componentes permitieron la aparicin del Microprocesador,


circuito integrado que rige las funciones fundamentales del computador, as
como tambin de las memorias electrnicas y dems componentes que
forman parte del computador actual, cuyo tamao reducido hizo posible la
creacin de las microcomputadoras o computadoras personales (PC).

En 1981, IBM devel su computador personal y, en 1984, Apple


su Macintosh. A medida que estas mquinas se h acan ms poderosas, se
pudieron enlazar en redes, lo cual eventualmente condujo al desarrollo de
Internet. Otros de los adelantos que se han desarrollado en esta generacin
son el uso de interfaces grficas (Windows y Mac OS), el Mouse y aparatos
porttiles. Hoy en da las tecnologas LSI (Integracin a gran escala) y
VLS I (integracin a muy alta escala) permiten que cientos de miles de
componentes electrnicos se almacenen en un circuito integrado, tambin
llamado chip.

Como principales caractersticas de estas mquinas podemos


mencionar el aumento continuo de la capacidad de procesamiento y
almacenamiento, con una notoria reduccin de los tiempos de respuesta,
trayendo aparejado una disminucin de los costos del hardware.

Estas mquinas han permitido el desarrollo de modernos y


poderosos sistemas de informacin y tratamiento de bases de datos ,
consistentes en un conjunto de elementos de hardware y software
interrelacionados que mediante el uso de interfaces grficas y amigables
permiten un uso sencillo y r pido de la informacin.

En la actualidad, las mquinas se pueden conectar entre si


formando redes que se extienden a nivel mundial (Internet), con sistemas
operativos poderosos que facilitan dicha comunicacin.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 15


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.3.- FORMATO DE DATOS.


Para la computadora existe n solo dos smbolos que puede
entender, estos son 0 y 1, que en realidad , fsicamente estn dados por
voltaje bajo y voltaje alto en un conductor, que representarn al Cero (0) y
al Uno (1) respectivamente. Estos dos smbolos conforman los trminos
binarios (bit) que corresponden al sistema binario de numeracin, con los
que se elaborarn los cdigos que la mquina ejecutar; pero programar en
binario es demasiado tedioso e induce a la ocurrencia de errores, por lo que
se necesita agrupar los cdigos para m anipularlos de mejor manera, lo que
se lograr con el sistema de numeracin hexadecimal.

I.3.1.- Representacin Binaria y Hexadecimal

La mayora de las expresiones que se manejan al interior de la


computadora toman como elemento base a agrupamientos de 8 bits
llamados bytes, lo cual permite representar 256 (2 8 ) nmeros (hay dos
valores por cada bit) utilizando el sistema binario.

Para abreviar la representacin en binario, se suele emplear el


sistema de numeracin de base 16 o hexadecimal, en donde los dgitos son
0,19, A, B, C, D, E y F con A=10,, y F=15. Es muy fcil pasar de un
sistema a otro. En efecto, para la conversin es suficiente observar que un
digito hexadecimal equivale a un nmero binario formado por cuatro
dgitos binarios.

1110 0011 Binario


Por ejemplo:
C 3 Hexadecimal

As, 11100011 Binario = C3 hexadecimal.

De esta manera, el contenido de un byte (8 bits) est representado


por dos dgitos en hexadecimal.

El microprocesador recibir una serie de instrucciones e n binario


que ha de procesar; dentro de cada una de ellas estar la operacin a
ejecutar y los datos con los que ha de trabajar (o una referencia a ellos),
adems del lugar donde se dejarn los resultados; es decir, en cada
instruccin vienen indicados: cdigo de operacin, datos y direcciones.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 16


Mdulo del Curso Microcomputadoras I DAIINFO FII.

I.3.2.- Representacin de Datos

La mquina debe ser capaz de representar dos tipos de datos:


aquellos conformados exclusivamente por nmeros (enteros y reales) y
aquellos que pueden incorporar otros caracteres adems de nme ros. Los
enteros se representan tal cual, pero en binario y los reales se representan
en forma exponencial normalizada (signo, mantisa y exponente).

Adems, se debe considerar el signo de los nmeros, para lo cual


se destina un bit dentro del espacio reser vado para dicho nmero.

El espacio donde ser almacenado un nmero determinar el


rango de valores que se pueden colocar en l. Por lo general se establecer
una cantidad de bytes igual a una potencia de 2 para el almacenamiento de
nmeros en una computado ra.

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.

I.4.- MODOS DE DIRECCIONAMIENTO.


En cada instruccin se indica los datos con los se trabajar,
pudiendo encontrase estos datos junto con la instruccin o habr que irla a
buscar a algn lugar en la memoria de la mquina, para lo cual se
necesitar la direccin exacta en la qu e se encontrar dicho dato. Existen
diferentes tipos de direccionamiento , mencionaremos tres de ellos :

Direccionamiento Inmediato: se produce cuando en la misma


instruccin se especifica el valor, ejemplo:

Mover AX, 10

En este ejemplo se realiza la operacin de asignar el valor 10 al


registro AX. En este caso, el dato 10 est incorporado en la misma
instruccin, su direccionamiento es inmediato.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 17


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Direccionamiento Directo: cuando en la instruccin s e indica la


direccin de donde se va a traer el valor , ejemplo:

Mover AX, [121]

En el ejemplo indicamos que se pondr en AX lo que se encuentre


en la direccin 121 de la memoria. Es algo similar a buscar a una persona
cuando se tiene la direccin de su casa.

Direccionamiento Indir ecto: En este caso se accede a un lugar


donde se encuentra otra direccin por medio de la cual se llegar al valor
esperado. Ejemplo:

Mover AX, [BX]

En este caso, lo primero que tenemos que saber es cual es el valor


que contiene BX, supongamos que en BX se encuentre el nmero 325,
entonces ahora se ira a la direccin 325 para traer el dato que all se
encuentra. Es como buscar a una persona por medio de uno de sus
conocidos, se va donde el conocido, este te da la direccin de su casa y
luego vas a la casa con esa direccin y encuentras a la p ersona.

I.5.- EJERCICIOS DE APLICACIN.


1. - Convertir a hexadecimal:
a) 10011100010101111
b) 110101011011110101

2. - Diga que tipo de direccionamiento se aplica en los siguientes caso s:


a) Mover CX, [BX]
b) Sumar AX, BX
c) Mover [SI], 15
d) SaltarA [182]

3. - Se tiene un hipottico microproce sador de 32 bits que utiliza el primer


byte para el cdigo de operacin y los restantes para un operando
inmediato o una direccin de operando, hallar:
a) La capacidad de memoria en bytes direccionable directamente.
b) La cantidad de cdigos de operacin que se pueden manejar.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 18


Mdulo del Curso Microcomputadoras I DAIINFO FII.

II.- ARQUITECTURA DEL 8086.

En el captulo anterior hemos visto como el computador est


conformado por varias partes, siendo una de ellas el microprocesador, el
cual se constituye en el cerebro de la computadora . En este captulo no s
ocuparemos de examinar el interior del microprocesador 8086, el cual es un
descendiente directo del 8080, pero con registros de 16 bits, un bus de
datos de 16 bits y direccionamiento de 20 bits, permit iendo controlar un
megabyte de memoria. Estudiar el 8086 nos pro porcionar un esquema
sencillo que servir de base slida para el entendimiento de los actuales
microprocesadores.

Cuando se habla de la Arquitectura de un procesador se est


haciendo referencia a todos aquellos aspectos que son visibles a un
programador d e bajo nivel y que tienen una incidencia directa en la lgica
de un programa en ejecucin ; es decir, abarca la disposicin de sus
componentes internos y la relacin que hay entre ellos para implementar su
funcionalidad; entendida sta como todas las operac iones que es capaz de
realizar, lo que se expresa a travs del conjunto de instrucciones que le
pertenece.

El conjunto de componentes internos del microprocesador s e


estructura de cierta manera para otorgarle la funcionalidad requerida por el
conjunto de instrucciones que implementa, por lo que a continuacin nos
ocuparemos de estudiar dicha estructura interna, para luego estudiar el
conjunto de instrucciones que en l se implementan.

II.1.- ESTRUCTURA DEL MICROPROCESADOR.


El microprocesador es un dispositivo elec trnico que se encarga
de procesar instrucciones que se recibirn de algn lado, stas se van a
procesar y se trasferir sus resultados a otro lado, lo cual implica tener un
control de todo lo que sucede, ordenando lo que se debe hacer en cada
momento y controlando el trfico de los datos a travs de un
direccionamiento adecuado del flujo ; adems, deber efectuar operaciones
aritmticas y de toma de decisiones , y deber contar con lugares para poder
almacenar internamente los datos y resultados de las operaciones.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 19


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Todas estas labores que debe realizar el microprocesador nos


conlleva a tener dentro del mi smo a los diversos componentes que s e
muestran en la siguiente figura y que a continuacin explicaremos.

REGISTROS

ALU

U. C.

Unidad de Control : Se encarga de hacer ejecutar todas las


instrucciones que llegan a ella , a travs de la decodificacin de la
instruccin que recibe, analizando el estado actual de la mquina y
suministrando a las partes involucradas en dicha instruccin las seales de
control que hagan falta para cumplir con dichas rdenes, sincronizando la
labor dentro de la maquina en base a la seal que recibe del reloj .

Unidad de Aritmtica y Lgica: Es ms conocida por sus siglas


en ingles (ALU Arithmetic and Logical Unit). Se encarga de realizar todas
las operaciones aritmticas y lgicas que deba efectuar la CPU , las cuales
realiza en binario, representando tanto a nmeros enteros como de punto
flotante.

Registros: son espacios fsicos dentro del microprocesador con


capacidad de almacenar 8 16 bits, los cuales, por conveniencia, se
numeran de derecha a izquierda (15, 14, 13, 2, 1, 0); constituyndose en
zonas de memoria especiales de alta velocidad para almacenar informacin
temporalmente dentro de la CPU.

Los registros del procesador se emplean para controlar y apoyar a


las instrucciones en ejecucin, maneja ndo el direccionamiento de la
memoria y facilitando el procesamiento aritmtico . En la CPU se ejecuta 1
instruccin por vez y cada vez que se trae algo de la memoria o de los
mdulos de E/S se coloca e n los registros.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 20


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Los registros estn divididos en grupos los cuales tienen un fin


especfico. Los registros se dividen en:

1. - Registros de Segmento: A cada programa que se ejecuta en una


computadora se le asignan espacios de memoria donde podr alojar sus
instrucciones y datos; para el 8086, estos espacios de memoria son
llamados segmentos , cuyas direcciones iniciales se guardan en registros
de segmento. Un registro de segmento del 8086 tiene 16 bits de
longitud y contiene los dgitos ms significativos de dicha direccin, lo
que supone cuatro bits 0 a su derecha para completar los 20 bits de las
direcciones de memoria que se manejan en este tipo de mquinas. Los
registros de segmento son:

a) Registro CS: Es el registro que almacena la direccin inicial del


Segmento de Cdigo de un programa , donde se colocan todas las
instrucciones que le corresponden . CS proviene de sus siglas en
ingles (Code Segment).

b) Registro DS: Registro Segmento de Datos (Data Segment). Este


registro guarda la direccin inicial del segmento principal donde
el programa definir sus variables y colocar sus datos .

c) Registro SS: Registro S egmento de Pila (Stack Segment), el


registro SS permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos. En este registro
se almacena la direccin de inicio del segmento de pila de un
programa.

d) Registro ES: registro de Segmento Extra de datos, aqu tambin


se pueden colocar datos del programa. Puede considerarse como
un segmento adicional de datos, de modo de poder manejar dos
segmentos de datos a la vez.

En resumen, la direccin que guardan estos registros , sumada a un


valor de desplazamiento, genera una referencia a la localidad de un
byte especfico en uno de los segmentos de memoria asignados al
programa, donde se podr encontrar una instruccin, una direccin o un
dato segn el segmento de que se trate .

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 21


Mdulo del Curso Microcomputadoras I DAIINFO FII.

2. - Registro Contador de Programa: Es un registro de 16 bits, tambin


conocido como Puntero de Instruccin IP (Instruction Pointer), el cual
lleva el control de la secuencia de instrucciones que procesar la CPU,
apuntando en cada momento a la siguiente instruccin a ejecutarse.
Este registro nos va a permitir obtener la direccin de memoria en
donde se encontrar la siguiente instruccin a ejecutarse en la CPU , ya
que contiene el desplazamiento en el segmento de cdigo don de se
ubica la instruccin que se va a ejecutar a continuacin. Este registro
est asociado con el registro CS en el sentido de que el valor contenido
en IP se le sumar para encontrar dentro del segmento de cdigo a la
instruccin que se ejecutar.

3. - Registros Puntero: Los registros apuntadores estn asociados con el


segmento de pila y los segmentos de datos, permitiendo al procesador
acceder datos a travs de ellos, los registros apuntadores son:

a) Registro SP: Registro Puntero de Pila (Stack Pointer), g uarda la


direccin de la cima de la pila, el apuntador de pila SP es de 16
bits y proporciona un valor de desplazamiento en el segmento de
pila que se refiere al ltimo byte que fue colocado en la pila.

b) Registro BP: Registro Puntero Base (Base Pointer), g uarda una


direccin cualquiera en el interior de la pila. El registro BP es de
16 bits y permite guardar un valor de desplazamiento dentro del
segmento de pila para facilitar la referencia de parmetros
contenidos en ella, los cuales son datos y direcciones trans feridos
a subrutinas a travs de la pila.

c) Registros SI y DI: son Punteros ndice fuente y destino (Source


Index, Destination Index), ambos registros de 16 bits, estn
disponibles para hacer direccionamientos indexados y para sumas
y restas. Tambin son utilizados para algunas operaciones con
cadenas de caracteres y para entradas y salidas , en las que el
registro SI est relacionado con el segmento de Datos, mientras
que el registro DI se relaciona con el segm ento Extra.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 22


Mdulo del Curso Microcomputadoras I DAIINFO FII.

4. - Registros de propsito general: son 4 registros de 16 bits, utilizados


como caballitos de batalla para todo propsito; estos registros son las
herramientas del sistema que permiten colocar dentro de la CPU los
datos y direcciones que procesarn las instrucciones del programa . Son
los nicos que se pueden trabajar como una palabra (2 bytes) o como
mitad de palabra (un byte), siendo el byt e de la izquierda la parte alta
(High), y el byte de la derecha es la parte baja ( Low) utilizando las
letras H y L para referenciarlos.

a) Registro AX: E s el registro Acumulador principal, es utilizado


para operaciones que implican entrada y salida y la mayor parte
de la aritmtica, aqu se colocan valores que van a ser procesados
por la ALU, tomando implcitamente a este registro en dichas
operaciones, por ejemplo, para multiplicar y dividir. Algunas
operaciones generan cdigo ms eficiente si se refiere al registro
AX en lugar de los otros registros.

b) Registro BX: Es conocido como el registro Base ya que es el


nico registro de propsito general que puede ser empleado para
especificar direcciones de memoria, por ejemplo, como ndices
para direccionamiento indexado. Tambin es comn emplear al
BX para clculos.

c) Registro CX: Es conocido como el registro Contador. Puede


contener un valor para controlar el nmero de veces que un ciclo
se repite o un valor para corrimiento de bits, hacia la derecha o
hacia la izquierda, estando asociado implcitamente con dichos
procesos. El CX tambin es usado para clculos.

d) Registro DX: Es el registro de Datos. Algunas operaciones de


entrada y salida requieren su uso, y las operaciones de
multiplicacin y divisin con cifras grandes suponen a los
registros DX y AX trabajando juntos para conformar un solo
registro de 32 bits, donde AX toma la parte menos significativa
del nmero.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 23


Mdulo del Curso Microcomputadoras I DAIINFO FII.

5. - Registro de Estado: Conocido tambin como el Registro de banderas,


ya que cada bit acta como una bandera (flag) que indica el estado
actual de la m quina y el resultado del procesamiento, Cuando algunas
instrucciones piden comparaciones o se realizan clculos aritmticos
cambian el estado de las banderas, cada bandera o flag es un bit de
estado. A continuacin, mostramos la descripcin de los bits que
conforman el Registro de Estado:

Nombre de la Caractersticas
Bandera (Bit)

OF Indica el desbordamiento de un bit de orden alto (mas a la


(Over flow flag) izquierda) despus de una operacin aritmtica.

DF Indica el sentido en el que se realiza una operacin si es hacia


(Direction flag) delante o hacia atrs.

IF Indica si acepta o no una interrupcin externa, solicitudes que


(Interruption flag). la CPU recibe para que deje de hacer lo que est haciendo y
atienda a otra tarea.

TF Se activa cuando se esta ejecutando un programa en el modo


(Trap flag) de paso a paso.

SF Contiene el signo resultante de una operacin aritmtica


(Sign flag) (0=positivo y 1= negativo), se activa cuando el resultado es
negativo.

ZF Se activa cuando el resultado de una operacin sea cero.


(Zero flag)
AF Conocido tambin como bandera auxiliar, sirve para acarreo,
(Auxiliary carry flag) pero cuando el acarreo es del bit 3 al bit 4 de un byte. Es
empleado en los clculos decimales.

PF Indica paridad par o impar de una operacin de transferencia


(Parity flag) de datos.

CF Contiene el acarreo de orden ms alto despus de una


(Carry flag) operacin aritmtica.

El registro de estado no se manipula directamente como tal, sino


a travs de las operaciones que realiza la CPU, existiendo algunas
instrucciones que permiten activar o desactivar ciertos flags.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 24


Mdulo del Curso Microcomputadoras I DAIINFO FII.

II.2.- CONJUNTO DE INSTRUCCIONES.


Despus de conocer los componentes de la estructura interna del
microprocesador, debemos saber cuales son las instrucciones que soporta
dicha estructura y que permiten al programador de bajo nivel elaborar los
programas que harn funcionar a la mquina.

Todos los componentes internos del computador son dispositivos


electrnicos que trabajan con ciertos niveles de voltaje y no entienden otra
cosa que no sea niveles de voltaje; es decir, su lenguaje lo conforma una
combinacin de niveles de voltaje, siendo bsicamente a dos niveles: Alto
y Bajo, a los que reaccionan estos dispositivos.

El nivel Alto es representado por los humanos con el valor de 1


y el nivel Bajo con el valor de 0, siendo estos dos los nicos caracteres
que conforman su alfabeto, por lo que todas sus palabras se armarn en
base a unos y ceros , enmarcndose as en lo que conocemos como Sistema
Binario de Numeracin.

La mquina trabaja r entonces combinando unos y ceros en


cdigos que solo ella entender y que los humanos deberamos conocer si
queremos comunicarnos con ella ; estos cdigos que entiende un procesador
en particular conforman su Conjunto de Instrucciones, teniendo el 8086 el
suyo propio.

Pero trabajar en binario es demasiado tedioso por lo que s e han


ideado otras formas que facilitan esta labor, siendo una primera
aproximacin la conversin de los cdigos de binario a hexadecimal,
reduciendo su tamao a una cuarta parte ya que cada cuatro dgitos en
binario hacen un dgito en hexadecimal.

Ahora los cdigos que entiende la mquina se pueden expresar en


hexadecimal siendo ms pequeos que sus equivalentes en binario y por lo
tanto ms fcil de manipular y de memorizar (para quien tenga buena
memoria); pero aun as, para el programador comn sern de difcil
reconocimiento ya que carecern de un significado directo, por lo que se
idearon palabras nemotcnicas que recordarn fcilmente al programador
que labor realizaba cada instruccin de la mquina, dando origen as al
lenguaje Ensamblador o Assemble r.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 25


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Ahora los programadores de bajo nivel pueden desarrollar sus


programas en Assembler en vez de en binario, para luego, mediante un
proceso de conversin, obtenerlo en el lenguaje que entiende la mquina y
pueda ser ejecutado.

El lenguaje Assembler es dem asiado primitivo, careciendo de


estructuras de programacin y de datos, por lo que se han desarrollado
lenguajes de nivel superior como : C/C++, Java, Visual Basic, entre otros,
conocidos como lenguajes de alto nivel, que facilitan el desarrollo de
aplicaciones comerciales. Nuestro objetivo es trabajar lo ms cerca de la
mquina por lo que nos centraremos en el lenguaje Ensamblador para el
microprocesador 8086.

Antes de pasar a ver el Conjunto de Instrucciones del 8086 se


debe mencionar que estas palabras nemotcnicas provienen del idioma
Ingles debido a que los pioneros del desarrollo en esta rea provienen de
pases de esta habla, y por tal motivo sus nombres se forman por
abreviaturas de palabras en Ingles.

A continuacin, veremos las principales instrucciones que


conforman dicho conjunto en lenguaje Ensamblador clasificadas segn la
funcin que realizan . Cada instruccin que se muestra trabaja con cero, uno
o dos operandos, pudiendo ser referenciados mediante cualquier modo de
direccionamiento permitido.

Para cada instruccin se indica la sintaxis de la misma y una


breve explicacin de la labor que realiza.

II.2.1.- Instrucciones para Transferencia de Datos

Una labor fundamental de la computadora es el procesamiento de


datos, los cuales deben estar dentro de la CPU en el momento en el que se
les va a trabajar. Este procesamiento va a implicar el movimiento de datos
de un lugar a otro de la computadora pudiendo ser entre:

Memoria Registros

Registros Mdulos E/S

Registro Registro

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 26


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Para ello se disponen de instr ucciones especficas que permitirn


transferir los datos de un lugar a otro.

Instruccin MOV

Sintaxis: MOV Destino, Fuente

Con esta instruccin transferimos el dato que indica el oper ando


Fuente hacia el lugar especificado por Destino. El operando Fuente puede
especificar el valor a transferir por cualquiera de los modos de
direccionamiento, no siendo vlido para el Destino el direccionamiento
inmediato. Los datos se pueden llevar de memoria a registro y viceversa o
de registro a registro.

Tanto el Destino como la Fuente deben ser del mismo tamao,


pudiendo transferirse datos de 8 bits o de 16 bits, tal como se muestra en
los siguientes ejemplos:
MOV AX, BX ; Se mueven 16 bits
MOV AL, DH ; 8 bits
MOV [305], AX ; 16 bits
MOV [305], AL ; 8 bits
MOV [BX], AL ; 8 bits
En este ltimo ejemplo se usa el direccionamiento indirecto a
travs del registro BX, quien contiene la direccin del byte donde se
depositar el valor guardado en el registro AL de 8 bits. En estos ejemplos,
el tamao viene especificado por los r egistros involucrados, pero cuando no
se utilizan registros se debe especificar la cantidad de bits a transferir,
como en el siguiente ejemplo:
MOV [2Ah], 0A7h ; Se debe especificar si:
MOV BYTE PTR [2Ah], 0A7h ; transfiere 8 bits
MOV WORD PTR [2Ah], 0A7h ; transfiere 16 bits
Instruccin XCHG

Sintaxis: XCHG Operando1, Operando2

Permite intercambiar el contenido de un lugar con otro sin que se


pierda ninguno de los datos , tanto entre registros como entre registro y
memoria, pudiendo moverse 8 bits o 16 bits, tal co mo se muestra a
continuacin:
XCHG BL, AH
XCHG AX, [85h]

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 27


Mdulo del Curso Microcomputadoras I DAIINFO FII.

II.2.2.- Instrucciones Aritmticas

Si buscamos en el diccionario la palabra computadora nos dir


que es una mquina o aparato de calcular; es decir, de realizar operaciones
de clculo, esto es, efectuar bsic amente sumas, restas, multiplicaciones y
divisiones, por lo que el microprocesador 8086 debe tener instrucciones
que realicen esta labor, las que presentamos a continuacin.

a) Instrucciones para Sumar:

Sintaxis: ADD Destino, Fuente

Con esta instruccin se sumar el valor indicado por Fuente al


valor indicado por Destino y el resultado se va a colocar en Destino . Esto
es equivalente a:
Destino = Destino + Fuente

Sintaxis: ADC Destino, Fuente

Con esta instruccin se sumar con acarreo , el cual se encuentra


en el bit de acarreo CF del registro de estado .
Destino = Destino + Fuente + CF

b) Instrucciones para Restar:

Sintaxis: SUB Destino, Fuente

Con esta instruccin se restar el valor indicado por Fuente del


valor indicado por Destino y el resultado se va a colocar en Destino. Esto
es equivalente a:
Destino = Destino Fuente

Sintaxis: SBB Destino, Fuente

Con esta instruccin se restar con acarreo, el cual se encuentra


en el bit de acarreo CF del registro de estado.
Destino = Destino Fuente CF

En los siguientes ejemplos de suma y resta se muestra su forma


equivalente:
ADD AH, BL AH = AH + BL
SUB AH, BH AH = AH - BH
ADC AH, BL AH = AH + BL + CF
SBB [32h], DX [32h] = [32h] DX CF

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 28


Mdulo del Curso Microcomputadoras I DAIINFO FII.

c) Instruccin para Multiplicar :

Sintaxis: MUL Fuente

Con esta instruccin se efecta una multiplicacin del valor


indicado por Fuente con el valor contenido en el Registro Acumulador: AX
y el resultado se coloca en el registro acumulador , lo cual es equivalente a:
AX = AX * Fuente

Si el resultado de la multiplicacin es muy grande , es decir, que


exceda la capacidad de un registro, se usar tambin el Registro de Datos :
DX en conjunto con el registro AX, conformando un registro de 32 bits de
la siguiente manera:
DX AX = AX * Fuente

En ambos casos la fuente es de 16 bits. Si la fuente fuera de 8


bits se realiza la multiplic acin por el registro AL y el resultado se coloca
en el registro AX. Para que los resultados sean los correctos no se debe
olvidar de colocar previamente en el acumulador el valor correspondiente
al primer operando.

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:

Sintaxis: DIV Fuente

Esta instruccin permite efectuar la divisin entera de dos


nmeros, obtenindose el cociente y residuo como resultado. Este caso es
similar al de la multiplicaci n, ya que usamos al Registro Acumulador : AX,
para indicar que es lo que se va a dividir , colocndose el cociente en AX y
el residuo en el registro DX, lo que equivale a expresar:
AX = AX / Fuente
DX = AX % Fuente

Donde el smbolo % indica la operacin mdu lo (residuo).


Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 29
Mdulo del Curso Microcomputadoras I DAIINFO FII.

En este caso, el dividendo y la fuente son nmeros de 16 bits.


Pero si se quiere dividir un nmero grande se usara el Registro de Datos :
DX para formar el dividendo sobre un registro de 32 bits .
AX = (DX AX) / Fuente
DX = (DX AX) % Fuente

Si la fuente fuera de 8 bits se realiza la divisin del registro AX


entre la fuente y el cociente se coloca en el registro AL y el residuo en el
registro AH, siendo equivalente a:
AL = AX / Fuente
AH = AX % Fuente

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.

II.2.3.- Instruccin de Comparacin

Como parte del control del flujo de instrucciones que se ejecutan


en la computadora tenemos a la operacin de comparacin cuya sintaxis s e
muestra a continuacin:

Sintaxis: CMP Operando1, Operando2

Con esta instruccin se compara el operando1 con el operando2


pudindose obtener tres resultados diferentes: que sean iguales, que el
primero sea menor que el segundo o que el primero sea mayor que el
segundo; reflejndose esto en los flags del registro de estado de la
siguiente manera:
Si operando1 = operando2 ZF = 1
Si operando1 < operando2 SF = 1
Si operando1 > operando2 SF = 0

Ambos operandos pueden ser un registro o un lugar de memoria,


mientras que el operando2 puede ser adems un valor inmediato; no
pudindose comparar dos valores de memoria.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 30


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Lo que en realidad se opera en el microprocesador es una resta


del operando1 menos el operando2, cuyo resultado no se almacena en
ningn lugar, pero se activan los flags correspondientes en funcin del
resultado obtenido de la substraccin.

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.

II.2.4.- Instrucciones de Salto

En la computadora, las instrucciones se ejecutan en secuencia,


una a continuacin de otra segn como se hayan colocado en el programa
que las contiene. Pero en muchos casos se requiere alterar el curso de dicha
secuencia por diversas condiciones que se puedan presentar; para lo cual,
los saltos permiten derivar la ejecucin de la siguiente instruccin a un
lugar diferente de la que sigue en la secuencia.

Se dispone de dos tipos de instrucciones de salto: Incondicionales


y Condicionales; a todas ellas se les debe indicar la direccin a donde van
a saltar. La direccin viene a ser un lugar en el segmento de cdigo donde
deber estar la instr uccin que queremos que se ejecute y a partir de la cual
continuar la secuencia.

Para efectuar un salto incondicional utilizamos la siguient e


instruccin que proviene de la palabra en ingles: jump.

Sintaxis: JMP direccin

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.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 31


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Para los saltos condicionales disponemos de las siguientes


instrucciones, las que p or lo general se usan despus de una instruccin de
comparacin.

Sintaxis: JE direccin Saltar cuando hay igualdad


(jump if equals).
Sintaxis: JNE direccin Saltar cuando hay diferencia
(jump if not equals).
Sintaxis: JC direccin Saltar cuando hay acarreo
(jump if carry).
Sintaxis: JNC direccin Saltar cuando no hay acarreo
(jump if not carry).
Sintaxis: JO direccin Saltar si hay desborde
(jump if overflow).
Sintaxis: JA direccin Saltar si el valor1 es mayor que
el valor2 (jump if is above).
Sintaxis: JB direccin Saltar si el valor1 es menor que
el valor2 (jump if is below).
Sintaxis: JAE direccin Saltar si el valor1 es mayor o
igual que valor2
(jump if is above or equals).
Sintaxis: JBE direccin Saltar si el valor1 es menor o
igual que valor2
(jump if is below or equals).
Los saltos se efectan slo cuando la condicin es verdadera, en
caso contrario, la ejecucin del programa continua en la instruccin que se
encuentra a continuacin de la instruccin de salto.

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.

II.2.5.- Instrucciones para Incrementar y Decrementar

Se dispone de dos operadores unarios que permite variar el valor


de un operando en la unidad hacia arriba o hacia abajo, estos son:

Sintaxis: INC Operando


Sintaxis: DEC Operando
Ejemplo:
INC AX ; aumenta en uno el valor contenido en AX
DEC CX ; disminuye en uno el valor de CX.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 32
Mdulo del Curso Microcomputadoras I DAIINFO FII.

II.2.6.- Instrucciones Para Uso de Procedimientos

La modularidad de los programas es una caracterstica mu y


importante que permite ahorrar tiemp o y trabajo, mejorando la
confiabilidad de los mismos. Esto se implementa a travs de funciones y
procedimientos (conocidos como subrutinas) a los que se invoca desde
algn lugar del programa donde se les necesite y de los que se sale con un a
instruccin de retorno (como return en los lenguajes de alto nivel ).

Sintaxis: CALL nombre_rutina

El lenguaje Assembler utiliza la instruccin call para el llamado a


la subrutina que se quiere invocar, seguido del nombre de dicha rutina. Con
esta instruccin se transfiere el control a la primera instruccin de la rutina
que se ha llamado.

Sintaxis: RET

Con esta instruccin finaliza la ejecucin de una rutina que fue


previamente llamada, retornando al punto desde donde fue llamado el
procedimiento.

En Assembler se pueden elaborar rutinas es peciales que


responden a llamadas a Interrupciones, las cuales permanecen residentes en
memoria y a las que se puede invocar desde cualquier programa.

Para llamar a una interrupcin desde un programa en Assembler


se utiliza la instruccin int de la siguien te manera:

Sintaxis: INT nro_int

Donde nro_int es el nmero que identifica a la Interrupcin que


se est invocando.

Para salir de estas rutinas especiales y retornar al programa


llamador se utiliza la instruccin iret:

Sintaxis: IRET

En toda subrutina debe haber por lo menos una instruccin que


efecte el retorno hacia el lugar que hizo la llamada (pudiendo haber ms
de una).

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 33


Mdulo del Curso Microcomputadoras I DAIINFO FII.

II.3.- EJERCICIOS DE APLICACIN.


1. - Explique qu se entiende cuando se habla de la Arquitectura de un
microprocesador.

2. - Qu relacin hay entre el Conjunto de Instr ucciones de un


microprocesador y su Estructura interna?

3. - Explique el significado de cada una de las siguientes instrucciones:


a) MOV [345h], 59h
b) MOV BX, 345h
c) CMP BX, 59h
d) JNE 350h

4. - En la secuencia anterior se producir el salto? Por qu?

5. - Diga cul de las siguientes instrucciones no estn permitidas para el


8086 y por qu:
a) MOV [345h], [BX]
b) ADD AX, 53h
c) CMP BYTE PTR [754], DX

6. - Se tienen los siguientes valores en los registros de una CPU:

CS = 57ACh AX = D52h Posicin DS:05B3 = 0C8h

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

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 34


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.- FUNCIONAMIENTO DEL 8086.

Una vez que conocemos la arquitectura del 8086 podemos hacerl o


funcionar, es decir, podemos elaborar programas en lenguaje Assembler
utilizando las instrucciones que soporta este procesador.

En primer lugar, debemos conocer como se estructura un


programa en lenguaje Assembler y luego ejecutarlo en un procesador 8086
o superior, o en otras mquinas bajo un programa que lo simule.

III.1.- PROGRAMACIN EN ASSEMBLER.


En ensamblador como en otros lenguajes se utilizan los mdulos
fuente. A continuacin, veremos la forma como se estructuran estos:

Los Mdulos Fuente en Assembler se dividen en segmentos, cu ya


estructura es la siguiente:
nombre SEGMENT
instrucciones (1 por linea)
definicin de datos
definicin de procedimientos
definicin de macros
otros elementos.
nombre ENDS
Un modulo fuente debe contar por lo general con los siguientes
segmentos:

a) Segmento de Cdigo: CS (obligatorio)

En este segmento se escriben las instru cciones que definen lo que


va a hacer el programa. Se puede definir de la siguiente manera:
codigo SEGMENT
; aqu va el cdigo del programa
codigo ENDS
La palabra cdigo no es obligatoria , se puede usar cualquier
otro nombre para el segmento. Adems, se tiene que indicar los nombres de
los segmentos que se van a usar en el programa de la siguiente manera:
ASSUME CS: codigo, DS: datos, SS: pila
Aqu se le indica al ensamblador que el segmento que se asumir
como segmento de cdigo es el segmento que llev a por nombre codigo, el
de datos el que lleva por nombre datos y el segmento de pila ser el que
lleve el nombre pila.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 35
Mdulo del Curso Microcomputadoras I DAIINFO FII.

Assume es una palabra clave con la cual especificamos valores


para los registros CS, DS, SS ; quedando nuestro segmento de cdigo as:
codigo SEGMENT
ASSUME CS: codigo, DS: datos, SS: pila
; aqu va el cdigo del programa
codigo ENDS
Tambin se puede utilizar el siguiente formato para definir el
segmento de cdigo:
@code.
; aqu va el cdigo del programa
b) Segmento de Datos: DS

Este segmento se utiliza para definir las variables que se van a


usar en el programa, definindose de la siguiente manera:
datos SEGMENT
; aqu se definen las variables.
datos ENDS
La palabra datos no es obligatori a, el programador puede
utilizar cualquier otro nombre para el segmento; el cual, t ambin se puede
definir de la siguiente manera:
@data.
; aqu se definen las variables.
c) Segmento de Pila: SS

Es un rea de memoria que se reserva para hacer almacenamiento


temporal de datos (de 16 bits) o direcciones de retorno para lo s llamados a
subrutinas. Se define de la siguiente manera:
pila SEGMENT STACK
; definimos el tamao de la pila
pila ENDS
Nuevamente, la palabra pila no es obligatori a, pudiendo usar
cualquier otro nombre para el segmento , pero la palabra STACK si lo es,
sta le indicar al Ensamblador que ese segmento es el que se usar como
pila del programa. Al igual que los anteriores, t ambin se puede definir de
la siguiente manera:
@stack.
; aqu se define el tamao de la pila

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 36


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.1.1.- Trminos Bsicos

A continuacin, se presentan algunas definiciones bsicas y


trminos importantes para la comprensin y desarrollo de programas en
lenguaje Assembler.

Directivas: son indicaciones que se colocan en el programa


fuente para que las siga el Ensamblador al momento de generar el programa
ejecutable.

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.

Pseudo Operaciones: son expresiones que se colocan en un


programa y que no representan operaciones de mqui na, sino que se
utilizan para mejorar la legibilidad del programa , por ejemplo, en la
declaracin de variables, reservndose el espacio de memoria que se
necesite y, opcionalmente, dndoles valores para su inicializacin ; o
tambin para declarar constantes, como por ejemplo:
valor EQU 30
valor2 = 10+5
mensaje EQU Bienvenida
Aqu se estn asignando los nombres de valor, valor2 y
mensaje a los valores que se encuentran a su derecha, los que luego sern
reemplazados por el ensamblador cuando se gene re el programa ejecutable.
Como se aprecia, t ambin se puede utilizar el signo igual (=) para la
asignacin.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 37


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Declaracin de Variables : consiste en la reserva de un espacio


de memoria para albergar un dato. Dicho espacio ser manipulado en el
programa a travs del nombre asignado a la variable. El tamao del espacio
reservado puede ser de un byte, dos bytes o cuatro bytes, especificndose
de la siguiente manera:

DB: Define Byte, reserva de 8 bits para alguna variable.

DW: Define Word (16 bits).

DD: Define Double Word (32 bits).

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:

NEAR: indica que una etiqueta es cercana, o sea que la direccin


que representa est en el mismo segmento desde donde es referenciada .

FAR: indica que una etiqueta es lejana, o sea que la direccin que
representa est en otro segmento.

END: indica el final del programa fuente, va acompaada de una


etiqueta que especifica el punto de entrada al programa.

SEG: Es usada para obtener la direccin de un segmento.

OFFSET: Es usado para obtener el desplazamien to dentro de un


segmento, medido en bytes desde su inicio .

PROC: Indica el inicio de un procedimiento.

ENDP: Indica el fin de un procedimiento.

MACRO: Indica el inicio de un a macro.

ENDM Indica el final de un macro.

Otras palabras reservadas son aquellas u sadas para la definicin


de un segmento, de variable, instrucciones propias del ensamblador, etc.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 38


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.1.2.- Elaborando Programas

Hemos visto en el captulo anterior las principales instrucciones


que se pueden utilizar con un procesador 8086, ahora las vamos a coloca r
adecuadamente en un mdulo para que nos permitan cumplir con una labor
determinada.

En primer lugar, debemos plantearnos un problema a enfrentar,


comenzando por algo relativamente sencillo como es la suma de dos
nmeros que estarn inicialmente en dos va riables del programa y cuyo
resultado se colocar en una tercera variable.

Definimos un segmento para los datos que se necesitan, es decir


las dos variables que contendrn los nmeros a sumar (a y b) y una tercera
variable para el resultado (c), como se mu estra a continuacin:
datos SEGMENT
a DB 5
b DB 7
c DB ?
codigo ENDS

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.

El programa se inicia propiamente en la etiqueta comi enzo


donde encontramos dos instrucciones para mo ver explcitamente la
direccin de inicio del segmento de datos al registro DS (este es un paso
necesario). Luego siguen las instrucciones que mueven los valores de las
variables a y b a los registros de propsito general AX y BX, los que se
suman en la si guiente instruccin quedando su resultado en el registro AX,
el cual se mueve a la variable c, finalizando as el programa.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 39


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.1.3.- Funciones del DOS

Los programas, por lo general, debern recibir datos del exterior


para ser procesados, y mostrar luego los resulta dos; es decir, deben existir
mecanismos por los que se ingresen valores al programa y por los que se
devuelvan hacia el usuario. Para ello, el sistema operativo DOS
proporciona instrucciones mediante las cuales se hace un llamado a
procedimientos que se en cargarn de estas labores.

El Sistema Operativo DOS brinda a los programadores un


conjunto de funciones de servicio, las cuales estn numeradas para su
identificacin y pueden ser invocadas llamando al Sistema Operativo
mediante una interrupcin del progra ma actual con la siguiente instruccin:
INT 21h
Previo a la llamada al DOS se habrn colocado ciertos valores en
algunos registros de la CPU para que el Sistema Operativo sepa qu es lo
que se le est solicitando. As por ejemplo, para efectuar la impresin de
un caracter en pantalla se deber colocar el valor de 02h en el registro AH,
con lo que se est indicando el nmero de la funcin solicitada del DOS;
adems se colocar el cdigo ASCII del caracter a imprimir en el registro
DL, con lo que las instruc ciones que se necesitaran para imprimir la letra
A en pantalla sern:
codigo SEGMENT
Assume CS: codigo
inicio: MOV AH, 02h
MOV DL, 41h
INT 21h
MOV AH, 4Ch
INT 21h
codigo SEGMENT
END inicio
Para finalizar un programa es necesario interrumpir su eje cucin,
lo cual se puede hacer directamente con la interrupcin 20h o a travs del
DOS con el servicio 4Ch de la interrupcin 21h (como est en el ejemplo
anterior).

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 40


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.2.- USO DE PILAS.


Como ya se ha mencionado anteriormente la pila se usa a travs
de un segmento de memoria llamado Segmento de Pila, cuya direccin de
inicio se mantiene en el registro SS ; mientras que el registro Puntero de
Pila SP (stack pointer) contiene el desplazamiento de la cima de la pila ,
sealando el lugar donde fue colocado el ltimo dato en la pila. El registro
de base de la pila es BP y se utiliza para acceder a los datos de l
segmento de la pila, independientemente de su posicin en ella.

El segmento de pila lo definiremos as:


pila SEGMENT STACK
DB n DUP(?)
pila ENDS
En donde pila es el identificador del segmento de memoria
destinado para la pila; n es el nmero de bytes que contendr la pila o
tamao del segmento de la pila declarado ; haciendo que este segmento est
comprendido entre la s direcciones SS:0000 y SS:n -1 de memoria.

Al inicio la pila estar vaca por lo que el SP contendr el valor


especificado por n, sealando al fondo de la misma.

III.2.1.- Funciones de la Pila

La pila es una estructura de datos en la que los valores son


introducidos por la cima y son extrados por la cima (en orden inverso al
que se introdujeron), por lo que se necesita de funciones que nos permitan
realizar estas labores, las que veremos a continuacin.

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.

c) Acceso a Datos de la Pila:

En muchos casos se hace necesario acced er a los datos que estn


en la pila sin tener que extraerlos, es decir, sin mover el valor del SP. En
este caso se hace uso del registro BP, al que se le deber colocar el
desplazamiento correspondiente al dato a obtener.

En la siguiente instruccin se est copiando el dato apuntado por


BP en el segmento de pila hacia el registro BX:
MOV BX, [BP]
Para usar la pila adecuadamente se deben tener en cuenta algunos
consejos: en primer lugar, se deber a pilar con PUSH y extraer con POP, es
decir tratar de usar en la menor medida posible el registro BP.

Todas las instrucciones de apilamiento y extraccin deben estar


apareadas para que al final de c ada proceso la cima de la pila est donde s e
inici. Si fuera necesario, es posible modificar el valor del SP de forma
explcita, por ejemplo:
ADD SP, 04h
Por otro lado, en el desarrollo de un programa, el tamao que se
le establezca a la pila debe ser el adecuado para el procesamiento que se va
a realizar.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 42


Mdulo del Curso Microcomputadoras I DAIINFO FII.

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 .

Una subrutina se define como un bloque de instrucciones de


programa colocadas entre las palabras claves PROC y ENDP, identificadas
por un nombre de la siguiente manera:
Nombre PROC [NEAR / FAR]
;instrucciones
RET
;instrucciones
Nombre ENDP
Dentro de la subrutina deber existir por lo menos una
instruccin RET que efect e la salida del procedimiento o retorno hacia el
lugar desde donde fue llamada esta rutina.

Las etiquetas NEAR o FAR indican si el procedimiento se


encuentra en el mismo segmento desde el cual ser llamado o fuera de l .
Si el procedimiento va a ser llamado desde el mismo segmento , la etiqueta
NEAR ser opcional, en cambio si va a ser llamado desde otro segmento la
etiqueta FAR ser obligatoria.

Para llamar a una subrutina en Assembler se usa la siguient e


instruccin:
CALL nombre_procedimiento
La ejecucin de un programa se controla a travs del registro IP,
el cual guarda el desplazamiento dentro del segmento de cdigo (CS)
correspondiente a la siguiente instruccin que la CPU deber ejecutar. La
instruccin CALL lo que hace es transferir el control de la e jecucin del
programa a la direccin de inicio del procedimiento especificado por
nombre_procedimiento y efectuar lo que se indica all , es decir, coloca en
el registro IP la direccin del procedimiento solicitado .

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 43


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Adems, se debe saber que esta instrucci n apila


automticamente las direcciones de retorno, es decir, la direccin de la
instruccin que sigue a la llamada, pudiendo ser apilada una o dos
direcciones dependiendo si la rutina es NEAR o FAR.

Si el procedimiento es NEAR se apilar s lo el desplazamiento de


la instruccin donde se qued el programa al llamar al procedimiento, pero
si el procedimiento es FAR se apilar n 2 direcciones, una que corresponde
a la direccin del segmento de cdigo y otra al desplazamiento
correspondiente.

Otro punto muy importante que se debe saber es que todo


procedimiento debe contener al menos una instruccin de retorno , es decir,
debe tener un RET o un RETF. RET se puede usar en un procedimiento
cercano o lejano, en cambio RETF obliga al programa a desafilar 2
direcciones para retornar ya que se usa en procedimientos lejanos. Por lo
general estas instrucciones se usan al final de un procedimiento, pero se
pueden poner en cualquier parte del procedimiento, o cuando sea necesario
salir del mismo.

III.3.1.- Uso de la Pila para el Paso de Parmetros

Si se quiere elaborar procedimientos generales, estos debern


trabajar con parmetros , para lo cual se puede hacer uso de la pila para el
envo de estos valores. Sabemos que con cada llamada a una rutina se
apilarn las direcciones de retorn o, pudiendo ser una o dos segn se trate
de un llamado cercano o lejano ; entonces, antes del efectuar el llamado se
deben apilar los valores que se transferirn a la rutina .

Una vez dentro de la rutina, se debern apilar los valores de los


registros que la rutina utilizar, para poder conservarlos a su retorno.

A continuacin, hay que acceder a los parmetros transferidos.


Para ello se har uso del registro BP al que se le copiar el valor del SP:
MOV BP, SP
Luego se deber incrementar el valor de BP hasta alcanzar a los
parmetros transferidos, es decir, se sumar la cantidad de registros
apilados por la rutina ms las direcciones de retorno.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 44


Mdulo del Curso Microcomputadoras I DAIINFO FII.

En este momento BP apuntar al ltimo de los parmetros


apilados antes del llamado a la rutina, a partir de aqu se podr acceder a
dichos valores segn se lo requiera, ya sea copindolos en registros o
utilizndolos en las instrucciones que hagan falta. Por ejemplo:
MOV AX, [BP]
ADD BX, [BP + 4]
CMP [BP + 8], 012h
Toda referencia a BP entre corchetes se interpreta como un
acceso al segmento de pila definido en el programa.

Al final de la rutina se deber dejar la pila como se la recibi, es


decir, se deber desapilar todos los registros que se apilaron al inicio de la
rutina, quedando en la cima las direcciones de retor no; las que sern
desapiladas automticamente por la instruccin RET.

De retorno en la funcin llamadora se debern desapilar los


parmetros enviados previamente para que el SP vuelva a su valor original
y la pila quede como estaba inicialmente (antes del llamado).

Con estos pasos y consideraciones sobre la pila se podr realizar


la transferencia de parmetros al procedimiento y se podr salir de la
subrutina sin problemas.

III.4.- MANEJO DE ARCHIVOS.


Un archivo es una secuencia de bytes que se almacenan en el
disco, estos representan informacin para el usuario por lo tanto deben
tener una organizacin interna definida por el programador . Desde el
lenguaje Assembler se manejan los datos del archivo como un flujo de
bytes que se transfieren desde el disco a zonas de memoria predefinidas y
viceversa.

Para manejar a un archivo se necesita de un Descriptor del


Archivo, el cual viene a ser un nmero de 16 bits con el cual el sistema
operativo identifica un archivo. Tambin se lo conoce como file handle o
manejador de archivo.

Adems, se requiere de un Buffer o espacio temporal en l a


memoria donde se coloca lo que se est intercambiando con el disco.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 45


Mdulo del Curso Microcomputadoras I DAIINFO FII.

La comunicacin con el archivo y transferencia de informacin


est sujeta a la ocurrencia de errores, a los que se debe da r un tratamiento.
Este Manejo de Errores se trabaja a travs del flag o bandera de acarreo
CF del registro de estado y del registro AX; as tenemos que:

Cuando CF = 0 La operacin es correcta.

Cuando CF = 1 La operacin es incorrecta.

En el registro AX queda el cdigo de error despus de realizada


la operacin con el archivo .

III.4.1.- Operaciones con Archivos

El lenguaje ensamblador permite realizar las operaciones


necesarias para manipular y mantener archivos. Las operaciones con
archivos las realizaremos por medio del Sistema Operativo por lo que hay
que llamarlo a travs de los servicios de la interrupcin 21h.

Los nmeros de los servicios correspondientes a las operaciones a


realizar se colocarn en el registro AH antes de llamar a la interrupcin
21h, y son los siguientes:

- Creacin: 3Ch

- Apertura: 3Dh

- Cierre: 3Eh

- Lectura: 3Fh

- Escritura: 40h

- Movimiento de puntero: 42h

Creacin: Para crear un archivo, es decir, darle un lugar en el disco donde


resida, se realizan los siguientes pasos:

a) En AH colocamos el valor 3Ch 60 (en decimal).


MOV AH, 3Ch
b) En el segmento de datos debe estar definido el nombre que va a
tener el archivo, este nombre se va a asigna r a una variable, el
nombre debe terminar con un cero. Ejemplo:
nomArch DB Datos.txt, 0

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 46


Mdulo del Curso Microcomputadoras I DAIINFO FII.

c) En el registro DX colocamos la direccin de inicio del nombre


del archivo mediante su desplazamiento en el segmento de
datos, as:
MOV DX, OFFSET nomArch
d) En el registro CX colocamos el valor cero para indicar el modo
normal de creacin.
MOV CX, 0h
e) Luego llamamos al S istema Operativo para que realice la
operacin.
INT 21h
Si la operacin es correcta en AX queda el descriptor del archivo.
En caso contrario en AX queda el cdigo de error. Es recomendable guardar
el descriptor del archivo en una variable, por ejemplo:
MOV descriptor, AX
Apertura: consiste en establecer un flujo de comunicacin con un archivo
del disco. Se realizan los siguientes pasos:

a) Colocamos en el registro AH el valor 3Ch 61.


MOV AH, 3Ch
b) Ponemos en DX la direccin de nomArch.
MOV DX, OFFSET nomArch.
c) En AL especi ficamos el modo de apertura:

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

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 47


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Cerrar: con esta operacin eliminamos el flujo de comunicacin con el


archivo establecido en la apertura, para lo cual se observan los siguientes
pasos:

a) Colocamos en AH el valor 3Eh 62.


MOV AH, 3Eh
b) En BX ponemos el descriptor del archivo que vamos a cerrar:
MOV BX, descriptor
c) Llamamos al DOS para cerrar el archivo:
INT 21h
d) Verificamos con el Carry Flag de 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
Lectura: para transferir datos desde el archivo a la memoria se deben seguir
los siguientes pasos, despus de haber abierto correcto dicho archivo:

a) Colocamos en AH el valor 3Fh 63.


MOV AH, 3Fh
b) En el registro BX ponemos el descriptor del archivo del que
vamos a leer, el cual fue obtenido en la apertura :
MOV BX, descriptor
c) Especificamos en el registro DX el lugar de memoria donde se
va a recibir a los bytes que se leern:
MOV DX, OFFSET cadena
d) En CX indicamos la cantidad de bytes que queremos leer:
MOV CX, cantidad
e) Llamamos al DOS para efectuar la lectura:
INT 21h
f) Verificamos con el Carry Flag si la lectura se realiz con xito
o no.
JC rut_error
Si se logr realizar la lectura con xito, el registro AX contendr
la cantidad de bytes ledos desde el archivo, en caso contrario contendr el
cdigo de error.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 48


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Escritura: con esta operacin se tran sfieren bytes desde un lugar de la


memoria hacia el archivo con el que se est trabajando , para lo cual se debe
hacer lo siguiente:

a) Colocamos en AH el valor 40h 64.


MOV AH, 40h
b) En BX ponemos el descriptor del archivo en el que vamos a
escribir:
MOV BX, descriptor
c) Especificamos en el registro DX la direccin de memoria
desde donde se va a tomar los bytes a escribir:
MOV DX, OFFSET cadena
d) En CX indicamos la cantidad de bytes a escribir:
MOV CX, cantidad
e) Llamamos al DOS para efectuar la escritura:
INT 21h
f) Verificamos con el Carry Flag si la escritura se realiz con
xito o no.
JC rut_error
Si se logro realizar la escritura con xito, AX contendr la
cantidad de bytes escritos, en caso contrario contendr el cdigo de error.

Posicionamiento: Cada archivo tiene asociado un puntero que seala a un


lugar determinado dentro del archivo y que es el lugar donde se efectuar
la siguiente operacin. Cada lugar dentro del archivo est ocupado por un
byte, siendo la sucesin de bytes la que conforma al archivo, numerndo se
cada uno de ellos desde el cero en adelante (el primer byte del archivo es el
que tiene el nmero cero) .

As, para colocar el puntero en un lugar especfico dentro del archivo y


realizar una operacin de acceso directo se debe conocer el n mero del
byte al cual se va a acceder. Para llegar a esta posicin se desplazar el
puntero la cantidad de bytes que lo separen de ella desde su posicin actual
o desde otro punto de referencia dentro del archivo, pudiendo ser stos el
inicio del archivo o su final. Es decir, el movimiento del puntero se expresa
como un valor de desplazamiento en bytes desde una posicin de referencia
hasta el lugar que se quiere alcanzar.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 49


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Para efectuar el posicionamiento se har lo siguiente:

a) Colocamos en AH el valor 42h 66.


MOV AH, 42h
b) En BX ponemos el descriptor del archivo con el que se va a
trabajar:
MOV BX, descriptor
c) Usamos en conjunto los registros CX y DX (en ese orden) para
formar un nmero de 32 bits e indicar en estos el
desplazamiento, por ejemplo, si nos queremos desplazar 100
posiciones en el archivo sera:
MOV CX, 0
MOV DX, 100
Por lo tanto el nmero formado por CX:DX ser 100

d) En AL indicamos el modo de desplazamiento que queremos ; es


decir, especificamos el punto de referencia desde el que se va
a contar el desplazamiento, pudiendo ser :

0: Contar desde el inicio del archivo.

1: Contar desde la posicin actual.

2: Contar desde el final del archivo.

Si queremos contar desde la posicin actual escribiremos:


MOV AL, 1
e) Llamamos al DOS para efectuar la escritura:
INT 21h
f) Verificamos con el Carry Flag si la escritura se realiz con
xito o no.
JC rut_error
Si se logr realizar la operacin con xito, el par de registros
DX:AX contendr la direccin actual del puntero; en caso contrario , el
registro AX contendr el cdigo de err or.

Para limpiar o borrar el Carry Flag se dispone de una instruccin


especfica que lo realiza:
CLC
Es recomendable utilizar esta instruccin antes de realizar
cualquiera de las operaciones sobre archivos que hemos visto previamente.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 50
Mdulo del Curso Microcomputadoras I DAIINFO FII.

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.

Las interrupciones estn a disposicin del programador de bajo


nivel para utilizarlas cuando sean necesarias , a travs de la instruccin:
INT nro_int
Donde nro_int es el nmero asignado a la interrupcin solicitada.
En el 8086 existen 256 nmeros disponibles para interrupciones de los
cuales una buena cantidad ya estn prefijados, quedando otros para que el
programador los use segn sus necesidades. Cada uno de estos nmeros son
como subndices que apuntan a un lugar dentro de un arreglo ubicado en las
primeras 1024 posiciones de la memoria de la mquina, en el que se guarda
las direcciones de inicio de las rutinas asociadas a la interrupcin
correspondiente, conocidas como vectores de interrupcin. Estas
direcciones son absolutas, es deci r, estn formadas por dos valores: el
segmento donde se ubican y el desplazamiento (4 bytes).

Cada vez que una interrupcin es invocada y atendida, se obtiene


su vector de interrupcin, es decir, la direccin de la rutina que deber
atender dicha solicitud , la cual se carga en los registros respectivos de la
CPU para que comience su ejecucin.

El procesamiento de una interrupcin es similar a la ejecucin de


una llamada a una subrutina lejana, es decir, se apilan automticamente las
direcciones de retorno antes de ceder el control a la rutina asociada a la
interrupcin; pero adems, y en forma previa y automtica, se apila
tambin el registro de estado; para luego desactivar la bandera de
interrupciones de tal manera de no aceptar otra interrupcin.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 51


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Al finalizar la rutina se desapilan las direcciones de retorno y el


registro de estado para que el programa contine donde se qued ,
activndose nuevamente la bandera de interrupciones .

Como toda subrutina, estas debern apilar al inicio los valores de


todos aquellos registros que sern usados por ella, desapilndolos antes de
terminar su ejecucin.

III.5.1.- Tipos de Interrupcin

a) Generadas por Hardware: Son interrupciones generadas por la


circuitera del ordenador en respuesta a algn evento y tienen asignados los
32 primeros nmeros . Las ms importantes son:

INT 0h: se produce cuando se ha efectuado una divisin por cero.

INT 4h (INTO): Esta instruccin ejecuta la interrupcin 4 en


forma condicional al flag de desbordamiento OF, es decir, se realiza la
interrupcin solo si OF est en 1. Se utiliza cuando una operacin puede
generar desbordes.

INT 8h: Se produce peridicamente con una frecuencia de 18.2


veces por segundo. Est determinada por el temporizador 8253/8254 (canal
0). Como desde esta interrupcin se invoca a s u vez a la INT 1Ch
(establecido as por IBM), se puede ligar algn proceso a la INT 1Ch para
que se ejecute peridicamente.

INT 9: Interrupcin de teclado generada al pulsar o soltar una


tecla.

INT 10h: Servicios de video.

INT 11h: Chequea el equipo.

INT 12h: Obtiene el tamao de memoria que se puede usar.

INT 13h: Realiza operaciones con el disco.

INT 16h: Servicios de teclado.

INT 17h: Soporte para la impresora.

INT 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh: Puertos serie, impresora y
controladores de disquete.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 52


Mdulo del Curso Microcomputadoras I DAIINFO FII.

INT 70h, 71h, 72h, 73h, 74h, 75h, 76h, 77h : Generadas en los
computadores AT y mquinas superiores por el segundo chip controlador de
interrupciones.

Estas interrupciones pueden ser enmascarables o no


enmascarables . Se pueden controlar las interrupciones para qu e se ejecuten
o no; es decir, que puedan quedar en espera hasta que el procesador
determine atenderlas, o que sean atendidas inmediatamente.

Para activar o desactivar la atencin de las interrupciones se


dispone de las siguientes instrucciones:
STI ; activa las interrupciones
CLI ; desactiva las interrupciones
Para evitar que se ejecuten las interrupciones se debe desactivar
la bandera IF (ponerla en cero con: Clear Interruption). Para activar IF se
ejecuta la instruccin STI (Set Interruption).

b) Generadas por Software: Son aquellas p roducidas por el propio


programa a travs de la instruccin INT , mediante la cual se invoca ciertas
subrutinas asociadas al nmero de la interrupcin especificado . Rutinas del
BIOS y el DOS son utilizadas mediante interrupciones a las que se puede
llamar colocando determinados valores en los registros de la CPU para que
realicen ciertos servicios.

III.5.2.- Interrupciones del BIOS

Las rutinas del BIOS (Sistema Bsico de Entrada Salida), son


ejecutados al encenderse la computadora, prim ero se ejecuta el BIOS
propio de la placa principal de la mquina (normalmente son dos chips con
etiquetas, que se pueden ver al abrir la mquina), este BIOS "principal" se
encarga de instalar sus interrupciones y verificar si hay otros BIOS
agregados en p laquetas adicionales; si los hay, los ejecuta y ellos se
encargan de instalar sus propias interrupciones. Las interrupciones de l
BIOS, son las que nos facilitan el acceso a los distintos perifricos, ya que
se encargan de "hablar" directamente con el Hardw are.

Algunas de las principales interrupciones del BIOS son: 10h, 11h,


12h, 13h, 16h, 17h, 19h.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 53


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.5.3.- Interrupciones del DOS

El Sistema Operativo es el que nos da la facilidad de administrar


los recursos de la mquina, de una forma que no cree conflictos entre l os
programas de distintos programadores. Es el que pone las reglas de como
utilizar la mquina. Entonces, las interrupciones de DOS, son las que nos
permiten manejar los distintos recursos de la mquina, es decir, los
archivos, los directorios , la memoria y el flujo de programas en si. Es el
que nos facilita la entrada de teclado o disco, etc.

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.

Cada interrupcin por lo general brinda varios servicios, por lo


que para hacer uso de ellos se deben especificar valores en algunos de los
registros de la mquina para especificarlos adecuadamente y lograr los
resultados esperados.

III.5.4.- Interrupciones Definidas por el Programador

El programador de bajo nivel tambin puede crear sus propias


rutinas y asociarlas a una interrupcin cuyo nmero no se est utilizando , o
remplazar alguna rutina ya existente; as, cuan do se invoque a dicha
interrupcin se ejecutar la rutina colocada all por el programador .

Los vectores de interrupcin (direcciones de las rutinas asociadas


a cada interrupcin) se encuentran en la RAM por lo que pueden ser
cambiados de tal manera que, en vez de llevar a la rutina original, sean
desviados hacia otro programa que, adems, podra quedar residente en
memoria. Si se reprograma una interrupcin por completo y sta es de tipo
hardware, hay que realizar una serie de tareas adicionales, como envi ar una
seal de fin de interrupcin hardware al chip controlador de interrupciones.
Si se trata adems de la interrupcin del teclado del PC o XT, hay que
enviar una seal de reconocimiento al mismo , etc.

Si se quiere elaborar una rutina asociada a una int errupcin se ha


de tener en cuenta los p asos que realiza una Interrupcin al inicio:

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 54


Mdulo del Curso Microcomputadoras I DAIINFO FII.

a) Salvar el registro de estado en la pila.

b) Desactivar las banderas TF e IF para no admitir otra interrupcin.

c) Salvar CS en la pila.

d) Salvar IP en la pila.

e) Recuperar CS del vector de interrupciones.

f) Recuperar IP del vector de interrupcin.

g) Saltar a la nueva instruccin a ejecutarse (CS: IP).

Adems, al salir de la Interrupcin se debe hacer lo siguiente:

a) Recuperar IP de la pila.

b) Recuperar CS de la pil a.

c) Recuperar el Registro de Estado.

Para cambiar los vectores de interrupcin se usa la INT 21h ,


colocando previamente en el registro AH los valores correspondientes a las
funciones que se requieren ; y en el registro AL se coloca el nmero del
vector de interrupcin con el que se va a trabajar . Las funciones o servicios
que permiten hacer esto son:

a) AH = 35h: Con esta funcin se puede leer el vector


especificado en AL.

b) AH = 25h: Con esta funcin se puede cambiar el vector de


interrupcin especificado en AL.

A continuacin, mostraremos como cambiar el vector de


interrupcin nmero 5.

Para Leer el Vector:


MOV AH, 35h
MOV AL, 5h
INT 21h
Como resultado tenemos en los registros :

ES: La direccin del Segmento donde est la rutina.

BX: El desplazamiento hacia el inicio de la rutina .

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 55


Mdulo del Curso Microcomputadoras I DAIINFO FII.

El propsito de leer el vector es poder restaurarlo con los valores


originales (desplazamiento y direccin del segmento) al final del proceso.

Para Escribir el nuevo Vector se debe tener en el registro DS la


Direccin del Segmento del nuevo servicio a instalar y en DX el
desplazamiento hacia la nueva rutina :
MOV AH, 25h
MOV AL, 5h
MOV DX, desplazamiento de la nueva rutina (OFFSET)
INT 21h
Al final del programa se recomienda restaurar el vector original
para evitar posibles incon venientes posteriores en la mquina .

Otra forma de cambiar un vector de interrupcin consiste en


acceder directamente a la posicin de memoria donde est dicho vector
para leer su valor o modificarlo, es decir, acceder a la direccin 0:4*n,
donde n es el n mero de la interrupcin considerada. Para ello se debe
mover 0 al registro DS y luego 4*n colocarlo en BX y obtener as el
desplazamiento; a continuacin, se suma 2 a BX y se obtiene el segmento
de la rutina actual de la interrupcin:
MOV AX, 0h
MOV DS, AX
MOV BX, 4*n
MOV AX, [BX] ; obtener desplazamiento
MOV DX, [BX+2] ; obtener segmento
Los valores as obtenidos debern guardarse en algn lugar de
memoria para despus poder restaurar el vector original de la interrupcin.
Tambin se puede usar el registr o ES en vez del DS para manipular el
segmento donde est el vector de interrupcin.

III.5.5.- Programas Residentes en Memoria

Un programa de usuario puede quedar residente en memoria de tal


manera que pueda ser llamado desde otro programa sin que tenga que
volver a cargarse; estos se conocen como TSR, los cuales se ejecutan y al
finalizar permanecen en memoria, volvindose a activar por la ocurrencia
de algn suceso o evento determinado , como pueden ser combinaciones de
teclas o eventos externos como recibir la comun icacin de alguno de los
puertos.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 56


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Para que otro programa pueda llamar a un programa residente


deber conocer su direccin absoluta en memoria, para lo cual el DOS
dispone de un rea de comunicacin entre aplicaciones de 16 bytes en las
direcciones 0:4F0h 0:4FFh donde se puede colocar dicha direccin y sea
posteriormente tomada por el programa que lo requiera.

Asumiendo que en la direccin 0:4F0h se colocaron el


desplazamiento y el segmento del programa residente , podremos llamarlo
de la siguiente manera:
PUSH DS
MOV AX, 0h
MOV DS, AX
MOV BX, 4F0h
CALL DWORD PTR [BX]
POP DS
En primer lugar, se guarda en la pila el valor del segmento de
datos del programa y se le asigna el segmento del rea de comunicaciones.
A continuacin, se hace una llamada lejana con di reccionamiento indirecto
al programa residente. Finalmente se restablece el segmento de datos del
programa extrayndolo de la pila.

PROGRAMA RESIDENTE

Para dejar un programa residente en memoria se puede hacer uso


del servicio 31h de la interrupcin 21h , debiendo colocar en el registro DX
el tamao del programa que queda en memoria, el cual se expresar en
bytes si el programa es de tipo COM o en pargrafos (bloques de 16 bytes)
si es de tipo EXE.

Tambin se puede hacer uso de la interrupcin 27h, En este c aso


se deber colocar en el registro DX el tamao del programa que queda en
memoria expresado en bytes.

Por otro lado, el programa debe salvar la direccin de la rutina en


un lugar accesible por quien vaya a hacer uso de ella, pudiendo ser este
lugar el rea de comunicacin entre aplicaciones (como vimos antes), o si
va a responder a una interrupcin, deber cambiarse el valor del vector
correspondiente.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 57


Mdulo del Curso Microcomputadoras I DAIINFO FII.

III.6.- EJERCICIOS DE APLICACIN.


1. - Cules son los segmentos en que se divide un programa en Assembler?

2. - Explique qu diferencia hay entre Near y Far.

3. - Qu es un archivo y qu operaciones se pueden realizar sobre l?

4. - Qu es una interrupcin y cmo se usa?

5. - Qu utilidad puede tener un programa residente?

6. - Si el ltimo byte de una pila esta en la direccin de memoria S S:0100


Cuantos bytes tiene la pila?

7. - Escribir en Assembler las siguientes expresiones:


a) Sumar 12 al registro BH.
b) Llevar palabra de la direccin 100h del segmento de pila al registro
AX.
c) Apilar registro BX.
d) Declarar el arreglo de caracteres car de 50 posi ciones en el
segmento de datos.
8. - Hacer un programa en Assembler en el que declare un arreglo de
nmeros enteros de dos dgitos en el segmento de datos de 50
posiciones. El programa deber pedir al usuario que ingrese el valor de
n, controlando que no sea ma yor que 50; luego ingresar los n valores
en el arreglo. Deber encontrar el valor mximo ingresado en el arreglo
y mostrarlo en pantalla. El programa deber mostrar en pantalla todos
los mensajes que hagan falta.

Utilizar dos segmentos de cdigo. En el pr imero colocar el programa


principal con el llamado a subrutinas y en el segundo colocar las
subrutinas; una de estas subrutinas deber utilizar la pila para el paso
de parmetros y devolucin de resultados.

9. - Dada la siguiente instruccin en lenguaje de alto nivel,

X = A * (B C) + C / D

Mostrar la seccin de cdigo con la secuencia correspondiente en


Assembler utilizando instrucciones que hagan uso del segmento de pila
para su resolucin. Suponer A, B, C, D, variables enteras declaradas en
el segmento de datos.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 58


Mdulo del Curso Microcomputadoras I DAIINFO FII.

IV.- COMPONENTES RELACIONADOS AL 8086.

La CPU, en este caso: el microprocesador 8086, es el component e


electrnico encargado de procesar todas las instrucciones de los programas
que se ejecutan en la mquina, pero para realizar su labor adecuadamente
necesita de un conjunto de circuitos integrados que lo acompaen y se
encarguen de tareas especficas tales como el procesamiento de clculos
matemticos de mayor complejidad y precisin, el control y tratamiento de
las interrupciones, el manejo de la comunicac in con los dispositivos
externos (Entrada / Salida), la generacin de pulsos de reloj para
sincronizar las actividades de la mquina, el control del uso del bus del
sistema, etc. cada una de estas actividades es realizada por un dispositivo
electrnico diferente conectado al 8086 , logrando en conjunto mejorar el
rendimiento de la mquina. A continuacin, nos ocuparemos de los
componentes ms importantes relacionados con el 8086 .

IV.1.- CONTROLADOR DE ENTRADA / SALIDA.


Empezaremos nuestro estudio por la comunicacin de la CPU con
el exterior, es decir, el intercambio de datos con los dispositivos llamados
perifricos conectados a la mquina. Existe una gran variedad de
dispositivos perifricos que se pueden conectar a la computadora, cada cual
con su propias caract ersticas y su propia forma de trabajo, debiendo la
CPU comunicarse con todos ellos de forma homognea sin hacer
distinciones, por lo que necesita de un elemento que se encargue de este
control y que desligue a la CPU de las particularidades de cada uno de
ellos, adems de otras razones que hacen necesaria la presencia de los
controladores de E/S , las que expondremos a continuacin .

La CPU es un dispositivo electrnico por lo que toda su labor se


realiza a la velocidad de l os electrones, es decir, a velocid ades bastante
elevadas, a diferencia de los perifricos en los que intervienen
componentes mecnicos, los cuales son normalmente lentos en comparacin
con la elevada velocidad de la CPU.

Por otro lado, cada perifrico manipula sus datos e informacin


agrupndola segn formatos diferentes a los que maneja la CPU, la cual
manipula bytes o palabras.
Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 59
Mdulo del Curso Microcomputadoras I DAIINFO FII.

Siendo que dentro de la mquina los datos se representan como


niveles de voltaje alto y bajo que simbolizan a los unos y ceros, l os
perifricos utilizan diferentes formas para representarlos fsicamente; as,
en una pantalla CRT se necesitarn seales analgicas para mostra rlos, en
un diskette se utilizan impulsos magnticos, en un CD la representacin
ser de naturaleza ptica, etc.

Teniendo en cuenta que la transm isin de datos es susceptible de


interferencias, se debe contar con procedimientos que verifiquen que lo
recibido es conforme con lo enviado, debiendo repetirse la transferencia en
caso de fallo o error.

Como puede apreciarse, se requiere de componentes li gados al


microprocesador que se encarguen de la comunicacin con los perifricos y
liberen a la CPU de esta labor, permitindole centrarse en su tarea de
cmputo y procesamiento de datos. A estos componentes se les conoce
como Mdulos de Entrada/Salida.

IV.1.1.- Gestin de la E/S

Una manera simple de gestionar los dispositivos de E/S consiste


en comprobar continuamente , mediante un bucle de testeo, si alguno de
ellos tiene un dato disponible para la CPU o lo est solicitando para
enviarlo al perifrico . Sin embargo, esto supone una importante prdida de
tiempo para el microprocesador ya que usa su tiempo slo en el testeo .

En una mquina que trabaja en multitarea y/o multiusuario,


resulta ms interesante y provechoso que la CPU realice otras labores
mientras los perifricos hacen su trabajo y le avisen cuando estos hayan
concluido. As, los mdulos de E/S enviarn una interrupcin al
microprocesador para solicitarle que atienda a una operacin de entrada o
salida en el momento que sea necesario.

En los dos casos menci onados (testeo continuo e interrupcin) la


transferencia se hace a travs de la CPU, pudiendo hacerse directamente
entre los mdulos de E/S y la memoria mediante un modulo llamado DMA
(Acceso Directo a Memoria) que se encarga del intercambio de datos entre
estos componentes, permitiendo que la CPU trabaje en otras tareas.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 60


Mdulo del Curso Microcomputadoras I DAIINFO FII.

IV.1.2.- Procesador de E/S 8089

El IOP (Input/Output Proces sor) 8089 es un circuito integrado


que acompaa al 8086, y que est encargado del procesamiento de las
Entradas y Salidas, poseyendo un ju ego de instrucciones de propsito
especial. Se trata de un procesador perifrico que, actuando como esclavo
del 8086, recibe sus rdenes y hace de intermediario entre la CPU y los
dispositivos externos, como se muestra en la siguiente figura, aumentando
sustancialmente el rendimiento del sistema.

CPU
8086

IOP PERIFRICOS
8089

El IOP 8089 ser el encargado de compatibilizar las velocidades


de trabajo de la CPU y los perifricos, as como sus respectivos formatos
de datos, conversiones y deteccin de errores.

Internamente, el IOP 8089 est dividido en dos canales a travs


de los cuales se pueden manejar dos dispositivos externos, no pudiendo
atender simultneamente a los dos, quedando inactivo uno de ellos cuando
se atiende al otro canal. Cada canal tiene su propio juego de registros y su
propio programa, siendo controlados por la Unidad Comn de Control, l a
que determina cu l canal est activo en un momento determinado segn las
prioridades de los perifricos conectados a ellos.

El IOP 8089 est diseado para efectuar transferencias de datos a


gran velocidad entre los dispositivos externos y la memoria principal a
travs del mdulo DMA 8237 (Acceso Directo a Memoria); lo cual es
bastante til cuando se requiere transferir bloques grandes de datos,
permitiendo a la CPU realizar otras l abores que requieran del uso del bus.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 61


Mdulo del Curso Microcomputadoras I DAIINFO FII.

IV.1.3.- Controlador Programable de DMA 8237

Es un dispositivo capaz de controlar las transferencias directas de


gran cantidad de informacin de una parte a otra del sistema, lo cual es til
cuando hay que mover grandes bloques de datos muy rpidamente, logrando
velocidades mayores que con octetos a travs de la CPU. Por ejemplo,
cuando se quiere transferir una imagen a la pantalla o cuando se quiere
intercambiar datos con las unidades de disco.

Cuando el controlador de DMA reci be de la CPU una orden para


hacer una transferencia, pide el control del bus y cuando lo obtiene genera
las direcciones necesarias y seales de control para realizar dicha
transferencia. Entonces, a travs del bus de datos se efecta la
transferencia desde el dispositivo de inicio al de destino.

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

Controlador Dispositivo Dispositivo


DMA A B
(8237)

El DMA puede dar servicio a cuatro disposi tivos distintos a l a


vez; a cada dispositivo se le asigna un canal del 8237; pudindose conectar
en cascada para soportar todos los canales que hagan falta.

El 8237 tiene registros para guardar las direcciones de origen y


destino, las ordenes recibidas de la CPU, el estado del DMA y mscaras de
prioridad, las cuales trabajan en conjunto con los esquemas de prioridad
para determinar a quin atender primero. As tambin, posee contadores
para incrementar o decrementar automticamente las direcciones de
transferencia de los datos cuando los puntos de origen o destino son lugares
de memoria (si estos puntos son puertos entonces las direcciones
permanecen constantes).

El 8237 tiene diferentes modalidades de trabajo, llegando en


algunos casos a requerir de slo dos ciclos para realizar la transferencia.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 62


Mdulo del Curso Microcomputadoras I DAIINFO FII.

El 8237 tiene la caracterstica de auto -inicializacin, la cual


consiste en que al terminar la transfer encia restaura automticamente los
parmetros del canal a los valores iniciales de dicha transferencia por si
haya que repetir la accin realizada.

IV.2.- MANEJO DE INTERRUPCIONES


Como hemos visto en captulo s anteriores, las interrupciones
vienen a ser solicitud es a la CPU de algn componente del sistema para que
deje de hacer lo que est haciendo y lo atienda. As, cuando se produce la
interrupcin, el microprocesador guarda el contexto actual en el que se
encuentra y ejecuta la correspondiente rutina de servici o, para despus
continuar con su tarea normal en el punto donde se qued . Por ejemplo, en
las operaciones de disco, cuando acaba la transferencia de datos se produce
una interrupcin de aviso y al ser atendida, una rutina del BIOS se activar.

Las interrupciones en el 8086 se dice que estn vectorizadas , es


decir, existe un arreglo ocupando las posiciones iniciales de la memoria en
el que estn colocadas las direcciones absolutas de inicio de las rutinas de
servicio correspondiente a cada interrupcin, cono cidas como vector de
interrupcin (con dos valores: la direccin de inicio de segmento y el
desplazamiento); dado a que cada interrupcin tiene un nmero que la
identifica, dicho nmero nos llevar a su respectivo vector de interrupcin.
Entonces, cada vez que se produce una interrupcin deber suministrarse su
nmero para poder acceder al vector correspondiente.

La CPU dispone de una lnea de control a travs de la cual los


diversos componentes del sistema pueden interrumpirla. La CPU
determinar en que momento ser atend ida segn estn habilitadas o no las
interrupciones en el registro de estado ; enviando en el momento de su
atencin, una seal de reconocimiento por otra lnea de control .

Pero con una sola lnea de interrupcin slo se podr enlazar a un


componente, siend o que son muchos los que necesitan interrumpir a la CPU
en diferentes momentos, pudiendo estos ser concurrentes en el tiempo, por
lo que hace falta un dispositivo que se encargue de administrar todas las
solicitudes hechas a la CPU en un momento determinad o.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 63


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Dicho dispositivo determinar la importancia de la solicitud


recibida segn las prioridades establecidas en el sistema y enviar una sola
peticin a la CPU, colocando a las dems en espera . Este dispositivo que
administre las solicitudes de interrupci n es el circuito integrado 8259, del
cual nos ocuparemos a continuacin.

IV.2.1.- El Controlador de Interrupciones 8259

Este circuito integrado est especialmente diseado para


controlar las interrupciones que se solicitan a la CPU en sistemas de
cmputo basados en el 8080, 8085 y en el 8086. Con este circuito integrado
se puede controlar hasta 8 interrupciones vectorizadas, para lo cual cuenta
con 8 lneas asncronas de peticin de interrupcin denominadas como IR0,
IR1, , IR7, como se puede apreciar en el lado derecho del siguiente
esquema:

-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

El 8259 dispone de una lnea para enviar la seal de interrupcin


a la CPU denominada como INT, la cual est conectada a la pata INT de la
CPU para solicitar la interrupcin cuando sta se presente.

Cuando la CPU atiende una interrupcin enva una seal de


reconocimiento de la interrupcin a travs de una lnea de control
denominada -INTA, por medio de la cual se fuerza al 8259 a depositar en el
bus la informacin del vector de interrupcin correspondiente; esto ltimo
se hace a travs de las lneas de datos denominadas como D7, D6, , D0,
el cual es un Bus de datos bidireccional por el que se transmite la
informacin de control/estado y el nmero de l vector de interrupcin que
est solicitando la atencin de la CPU.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 64


Mdulo del Curso Microcomputadoras I DAIINFO FII.

El 8259 dispone internamente de un buffer de datos que conecta


con el bus de datos de la placa principal del comput ador; cuyo diseo en 3
estados permite desconectarlo cuando sea necesario; a travs de este bus
circulan las palabras de control y la informacin de estado, as como el
nmero del vector de interrupcin en curso.

Una peticin de interrupcin de un componen te conectado al 8259


se ejecuta manteniendo en alto la lnea IR correspondiente hasta que se
recibe el reconocimiento . Las peticiones de interrupcin pendientes se
almacenan en un registro interno del 8259 llamado IRR (Interrupt Request
Register).

Luego, el 8259 evala la prioridad de estas interrupciones y


solicita la interrupcin a la CPU si es procedente; para ello dispone de un
componente que se encarga de la lgica de gestin de prioridad, la cual
determina qu interrupcin, de las solicitadas en el IR R, debe ser atendida
primero, utilizando para ello una plantilla de 8 bits que enva la CPU ,
llamada mscara de interrupciones , junto con otros esquemas predefinidos ,
de tal manera que cuando lleguen las seales de reconocimiento (INTA)
dicha interrupcin ser la primera en ser procesada y su bit correspondient e
se activar en otro registro interno llamado ISR (In Service Register) ; el
cual almacena todas las interrupciones que estn siendo atendidas en un
momento dado .

-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

Registro de Mscara de Interrupciones

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 65


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Al recibir la seal -INTA de la CPU, el 8259 activa el bit


correspondiente a la interrupcin de mayor prioridad en el ISR (la que va a
ser procesada) y lo borra del IRR. En este ciclo, el 8259 an no controla el
bus de datos. Cuando la CPU enva un segundo ciclo -INTA, el 8259
deposita en el bus de datos un valor de 8 bits que indica el nmero de l
vector de interrupcin del 8086, para que la CPU lo pueda leer y activar la
rutina correspondiente al servicio solicitado .

Dentro del 8259 hay un componente que maneja l a lgica de


lectura y escritura del chip, aceptando los comandos que enva la CPU ,
aqu hay registros para almacenar las palabras de inicializacin y operacin
que enva el procesador; tambin sirve para transferir el estado del 8259
hacia el bus de datos.
-INTA INT

LGI C A D E CO NT R O L

-RD Lgica de
-WR Lectura y
A0 Escritura 8259

-CS

El 8259 dispone de l neas de control a travs de las cuales la CPU


le indica que debe hacer; as, hay una lnea que h abilita la comunicacin
con la CPU (denominada CS) preparndola para recibir rdenes ; otra lnea
permite al 8259 aceptar comandos de la CPU (-WR) habilitando la escritura
del chip; otra lnea le permite dejar la informacin en el bus de d atos (-RD)
habilitando la lectura del chip .

En conjuncin con -CS, -WR y RD, la lnea A0 es empleada para


enviar las palabras de comando al 8259 y para solicitar informacin al
mismo. Suele ir conectada a la lnea A0 de la CPU.

Como vemos, el 8259 slo puede manejar las solicitudes de


interrupcin emitidas por ocho dispositivos , pero en el computador
tendremos ms de 8 dispositivos que requieran ser atendidos por la CPU,
por lo que se necesita de una manera de expansi n de su capacidad.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 66


Mdulo del Curso Microcomputadoras I DAIINFO FII.

Es as que, a un 8259 ligado al 8086, se le puede conectar en


cascada un mximo de 8 chips 8259 adicionales que actuaran como
esclavos, lo que permite gestionar sistemas hasta con 64 interrupciones;
para ello se dispone de 3 l neas de cascada denominadas CAS0, CAS1,
CAS2, que actan como salida en el 8259 maestro y como entrada en los
8259 esclavos, constituyendo un bus local .
-INTA INT

LGI C A D E CO NT R O L

CAS0 Buffer de
CAS1 Cascada y
CAS2 Comparador 8259

-SP/-EN

El buffer de cascada/comparador , interno al 8259, almacena y


compara las identificaciones de todos los 8259 que posea el sistema ; el
8259 maestro enva la identificacin del 8259 esclav o en las lneas CAS,
los 8259 esclavos la leen y el implicado en la operacin coloca en el bus de
datos el vector correspondiente a la rutina que atender la interrupcin en
los prximos ciclos de la seal de reconocimiento INTA.

La lnea -SP/-EN tiene doble funcin, pudiendo actuar como


habilitador de los buffers del bus (buffered mode); o para indicar si el 8259
est actuando como maestro o como esclavo (normal mode).

IV.3.- CONTROL DEL TIEMPO


Todo el trabajo realizado en la computadora debe ser coordinado
y armonizado en el tiempo para que se cumpla adecuadamente con las
tareas programadas. Para ello se requiere de un dispositivo que sincronice
la labor de todos los componentes, generando una seal de pulsos a una
frecuencia fija que marquen el paso al que se d ebern ejecutar todas las
actividades en la computadora, actuando como lo hace el bombo de una
banda de msicos en un desfile militar, haciendo que todos marchen a ese
ritmo. Del mismo modo, el temporizador 8253 cumple ese papel dentro de
la computadora, estableciendo as la velocidad de funcionamiento del
sistema; componente del cual nos ocuparemos a continuacin.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 67


Mdulo del Curso Microcomputadoras I DAIINFO FII.

IV.3.1.- El Temporizador 8253

El circuito integrado 8253/4 es un chip temporizador que puede


ser empleado como reloj de tiempo real, contador de sucesos, generador de
ritmo programable, generador de onda cuadrada, etc. La informacin
vertida estar relacionada con el 8254 que equipa a los equipos AT, algo
ms potente que el 8253 de los PC/XT.

a) Descripcin del Integrado: Este circuito integrado posee 3


contadores totalmente independientes, que pueden ser programados de 6
formas diferentes; las lneas de conexin de este circuito integrado se
describen a continuacin:

D7..D0 BUS de datos bidireccional de 3 estados.

CLK 0 CLOCK 0, entrada de reloj al contad or 0.

OUT 0 Salida del contador 0.

GATE 0 Puerta de entrada al contador 0.

CLK 1 CLOCK 1, entrada de reloj al contador 1.

OUT 1 Salida del contador 1.

GATE 1 Puerta de entrada al contador 1.

CLK 2 CLOCK 2, entrada de reloj al contador 2.

OUT 2 Salida del contador 2.

GATE 2 Puerta de entrada al contador 2.

A0..A1 Lneas de direccin para seleccionar uno de los tres contadores


o el registro de la palabra de control.

-CS Habilita la comunicacin con la CPU.

-WR Permite al 8254 aceptar datos de la CP U.

-RD Permite al 8254 enviar datos a la CPU.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 68


Mdulo del Curso Microcomputadoras I DAIINFO FII.

b) Descripcin Funcional:

El buffer del bus de datos, de 8 bits y tres estados, comunica el


8254 con la CPU. La unidad que controla la lgica de lectura y escritura
acepta entradas del bus y genera seales d e control para las partes
funcionales del 8254. Las lneas A0..A 1 seleccionan uno de los tres
contadores o el registro de la palabra de control, pa ra poder leerlos o
escribirlos.

El registro de la palabra de control es seleccionado cuando


A0=A1=1, este registro slo puede ser escrito (se puede obtener
informacin de estado, con el comando read -back del 8254, no disponible
en el 8253). Los contadores 1, 2 y 3 son idnticos en su funcionamiento,
por lo que slo se describir uno; son totalmente independientes y cada uno
de ellos puede ser program ado en una modalidad diferente.

En el esquema de un contador, se tiene el registro de la palabra


de control que, aunque no es parte del contador propiamente dicho, afecta a
su modo de funcionamiento. El registro de est ado, cuando es transferido al
correspondiente latch, contiene el valor en curso del registro de la palabra
de control y alguna informacin adicional. El contador propiamente dicho
est representado por CE (Counting Element) y es un contador descendente
sncrono de 16 bits que puede ser inicializado.

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.

La lgica de control del contador se encarga de que u n slo latch


est activo a un tiempo, ya que el bus interno del 8254 es de 8 bits. CE no
puede ser nunca ledo directamente (lo que se lee es OL).

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 69


Mdulo del Curso Microcomputadoras I DAIINFO FII.

De manera anloga, existen un par de registros CRM y CRL (CR


significa Count Register) que almacenan la cuent a del contador y se la
transmiten convenientemente a CE. Los valores de cuenta se escriben
siempre sobre CR (y no directamente sobre CE). La lgica de control
gestiona la conexin con el exterior a travs de las lneas CLK, GATE y
OUT.

IV.4.- OTROS CHIPS DE SOPORTE


Adems de los circuitos integrados vistos en las secciones
anteriores, tambin acompaan al 8086 otros chips que realizan funciones
importantes para el sistema tales como el coprocesador matemtico 8087 ,
los que veremos brevemente a continuacin .

IV.4.1.- El Coprocesador Matemtico 8087

El circuito integrado 8087 es un Procesador de Datos Numrico


que trabaja en paralelo con la CPU , compartiendo el mismo bus y el mismo
flujo de instrucciones , colocando estas en su propia cola de instrucciones, y
de la cual toma s lo aquellas que le compete, ignorando aquellas destinadas
a la CPU.

El 8087 cuenta con 8 registros de datos de 80 bits organizados


como una pila, utilizando un formato interno de nmeros en punto flotante ,
independientemente del formato externo de dicho s nmeros; dicho formato
utiliza 1 bit para el signo, 15 bits para el expon ente y 64 para la mantisa,
mejorando as el rango y la precisin en los valores intermedios obtenidos
en los clculos realizados. Adems, cuenta con registros adicionales para el
control (donde se especifica el grado de precisi n, tipo de redondeo, etc.) y
el estado (informacin sobre la situaci n actual).

El 8087 incrementa el conjunto de instrucciones que soporta el


8086, aadiendo instrucciones para el tratamiento de nmeros en punto
flotante con funciones aritmticas, exponenciales, log artmicas y
trigonomtricas, diseadas para trabajar a velocidades muy altas .

Los sistemas de cmputo basados en el 8086 que cuentan con el


8087 ven incrementado notablemente su potencia y velocidad de trabajo.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 70


Mdulo del Curso Microcomputadoras I DAIINFO FII.

IV.5.- EJERCICIOS DE APLICACIN.


1. - Explique por qu es necesario que la CPU haga uso de controladores de
Entrada / Salida.

2. - Qu diferencia hay entre el uso del testeo y el uso de las


interrupciones en el procesamiento de la Entrada / Salida?

3. - Explique brevemente cual es la estructura del IOP 8 089.

4. - Se requiere enviar 7680 bytes desde la memoria a uno de los puertos a


una razn de un byte cada 2 microsegundos. Si la CPU requiere 17
ciclos de reloj para enviar un byte; trabajando a una velocidad de 5
MHz, ser posible cumplir con la tasa especifi cada? En qu tiempo
se transmitirn realmente todos los bytes a travs de la CPU? En qu
tiempo se har la transferencia de todos los bytes si se usa el DMA que
requiere de 4 ciclos por byte?

5. - Qu significa que las interrupciones estn vectorizadas?

6. - Cmo la CPU puede atender varias interrupciones si solo dispone de


una lnea para ello?

7. - Explique brevemente cual es la estructura interna del 8259.

8. - Por qu se hace necesario el control del tiempo en la computadora?

9. - Cul es la duracin de un ciclo de reloj d e una mquina que trabaja a


8 MHz?

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 71


Mdulo del Curso Microcomputadoras I DAIINFO FII.

ANEXO

a. Tubos De Vaco: Tambin llamados vlvulas de vaco. Son


dispositivos electrnicos que consisten en una cpsula de vaco de acero o
de vidrio, con dos o ms electrodos entre los cuales pueden moverse
libremente los electrones. El diodo de tubo de vaco fue desarrollado por el
fsico ingls John Ambrose Fleming. Contiene dos electrodos: el ctodo, un
filamento caliente o un pequeo tubo de metal caliente que emite
electrones, y el nodo, una placa que es el element o colector de electrones.
En los diodos, los electrones emitidos por el ctodo son atrados por la
placa slo cuando sta es positiva con respecto al ctodo. Cuando la placa
est cargada negativamente, no circula corriente por el tubo. Si se aplica un
potencial alterno a la placa, la corriente pasar por el tubo solamente
durante la mitad positiva del ciclo, actuando as como rectificador. Los
diodos se emplean en la rectificacin de corriente alterna. La introduccin
de un tercer electrodo, llamado rejilla , interpuesto entre el ctodo y el
nodo, forma un triodo, que ha sido durante muchos aos el tubo base
utilizado para la amplificacin de corriente.

Prcticamente la totalidad de los tubos de vaco han sido


reemplazados por transistores, que son ms bara tos, econmicos y fiables.
Los tubos todava desempean un papel importante en determinadas
aplicaciones, como las etapas de potencia de los transmisores de radio y
televisin o en equipos militares que deben resistir el pulso de voltaje
inducido por las explosiones nucleares atmosfricas, que destruyen los
transistores.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 72


Mdulo del Curso Microcomputadoras I DAIINFO FII.

b. Trodo: El trodo fue inventado por el ingeniero estadounidense


Lee De Forest en 1906. Contiene una rejilla adicional al nodo y el ctodo.
La rejilla es normalmente una red de cable f ino que rodea al ctodo y su
funcin es controlar el flujo de corriente. Al alcanzar un potencial negativo
determinado, la rejilla impide el flujo de electrones entre el ctodo y el
nodo.

Con potenciales negativos ms bajos el flujo de electrones


depende del potencial de la rejilla. La capacidad de amplificacin del
triodo depende de los pequeos cambios de voltaje entre la rejilla y el
ctodo, que a su vez causan grandes cambios en el nmero de electrones
que alcanzan el nodo.

c. El Transistor: Denomina cin comn para un grupo de


componentes electrnicos utilizados como amplificadores u osciladores en
sistemas de comunicaciones, control y computacin. Hasta la aparicin del
transistor en 1948, todos los desarrollos en el campo de la electrnica
dependieron del uso de tubos de vaco termoinicos.

El transistor, que es capaz de realizar muchas de las funciones


del tubo de vaco en los circuitos electrnicos, es un dispositivo de estado
slido consistente en una pequea pieza de material semiconductor,
generalmente germanio o silicio, en el que se practican tr es o ms
conexiones elctricas.

Los componentes bsicos del transistor son comparables a los de


un tubo de vaco triodo e incluyen el emisor, que corresponde al ctodo
caliente de un triodo como fuente de electrones.

El transistor fue desarrollado por los fsicos estadounidenses


Walter Houser Brattain, John Bardeen y William Bradford Shockley de los
Bell Laboratories. Este logro les hizo merecedores del Premio Nobel de
Fsica en 1956. Shockley pasa por se r el impulsor y director del programa
de investigacin de materiales semiconductores que llev al descubrimiento
de este grupo de dispositivos. Sus asociados, Brattain y Bardeen,
inventaron un importante tipo de transistor.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 73


Mdulo del Curso Microcomputadoras I DAIINFO FII.

d. Clula Fotoelctrica: Compo nente electrnico bas ado en el


efecto fotoelctrico. En su forma ms simple, se compone de un nodo y un
ctodo recubierto de un material fotosensible.

La luz que incide sobre el ctodo


libera electrones que son atrados hacia el
nodo, de carga positiva, originando un flujo
de corriente proporcional a la intensidad de
la radiacin. Las clulas fotoelctricas
pueden estar vacas o llenas de un gas inerte
a baja presin para obtener una mayor
sensibilidad.

e. Circuito Integrado: Tambin conocido como chip Es un


pequeo circuito electrnico utilizado para realizar una funcin especfica.
Se combina por lo general con otros componentes para formar un sistema
ms complejo y se fabrica mediante la difusin de impurezas en silicio
monocristalino, que sirve como material semiconductor, o mediante la
soldadura del silicio con un haz de flujo de electrones. En la integracin a
gran escala (LS I, acrnimo de Large -Scale Integration) se combinan
aproximadamente 5.000 elementos, como resistencias y transistores, en un
cuadrado de silicio que mide aproximadamente 1,3 cm de lado. La
integracin a mayor escala puede producir un chip de silicio con millones
de elementos. La tecnologa de los ordenadores o computadoras se ha
beneficiado especialmente de las bondades del chip. Las funciones lgicas
y aritmticas de una computadora pequea pueden realizarse en la
actualidad mediante un nico chip con integracin a escala muy grande
(VLSI, acrnimo de Very Large Scale Integration) llamado
microprocesador, y todas las funciones l gicas, aritmticas y de memoria
de una computadora, pueden almacenarse en una nica placa de circuito
impreso, o incluso en un nico chip.

Un dispositivo as se
conoce como un microordenador o
una microcomputadora.

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 74


Mdulo del Curso Microcomputadoras I DAIINFO FII.

BIBLIOGRAFA.

BREY, Barry B. Los microprocesadores Intel.


KONG, Maynard Lenguaje Ensamblador Macro Assembler.
Ed. Pontificia Universidad Catlica del Per 1989.
MORGAN, Christopher. Introduccin al microprocesador 8086/8088 (16 bits)
WAITE, Mitchell. 1ra. Edicin. Ed. McGRAW-HILL. Mxico. 1988.
NORTON, Peter. Gua del programador para el IBM PC y PS/2
WILTON, Richard.
NORTON, Peter. Gua del programador en ensamblador para IBM PC, XT,
SOCHA, John. AT y Compatibles
RODRIGUEZ R., Miguel. Programacin ensamblador en entorno MS-DOS
TANENBAUM, Andrew. Organizacin de Computadores un enfoque estructurado.
3ra. Edicin. Ed. Prentice Hall. Mxico. 1992.

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/

Elaborado por: Ing. CIP Vctor H. Valle Ros. Pg. 75

Potrebbero piacerti anche