Post on 11-Jul-2015
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 1/64
UNIVERSIDAD TECNOLÓGICA AMÉRICAFACULTAD DE CIENCIAS DE LA
COMPUTACIÓN Y ELECTRÓNICA
EDUCACIÓN A DISTANCIA
GUÍA DE ESTUDIO
DATOS INFORMATIVOS
Carrera: Electrónica
Asignatura: Microprocesadores
Nivel: Octavo
Autor de la Guía: Ing. Flavio Corella Guerra
E-MAIL: fcorella1064@yahoo.es
Fecha Edición: Marzo 2009
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 2/64
FUNDAMENTACIÓN DE LA ASIGNATURA:
Los microprocesadores son los dispositivos electrónicos de mayor uso en la
actualidad, debido a que son la parte fundamental de los computadores.
Su reducido tamaño y precio, junto con sus altas prestaciones, permiten ahora
incorporarlos en aplicaciones donde antes se utilizaba la lógica discreta.
Debido a todo esto se hace necesario tener un conocimiento pleno de la
programación de estos dispositivos.
OBJETIVOS DE LA ASIGNATURA.
GENERAL
Comprender el funcionamiento y las secuencias de acciones cuando una
computadora ejecuta un programa.
ESPECÍFICOS
Comprender las arquitecturas de los personales
Establecer diferencias y semejanzas entre los distintos tipos de microprocesadores
Programar en lenguaje ensamblador
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 3/64
5.- PLAN TEMÁTICO POR UNIDADES.
CONTENIDOUNIDAD 1. INTRODUCCIÓN A LOS MICROPROCESADORES.1.1 Historia de la Arquitectura de las Computadoras.1.2 Familias de Microprocesadores Intel y con otros micros.
UNIDAD 2. ARQUITECTURA DEL PC2.1 Arquitectura general de una MicroComputadora.2.2 Arquitectura de 3 buses.2.3 Microprocesador, definición y funciones básicas.2.4 El CPU: definición y elementos (ALU, registros, unidad de control).2.5 Memorias ROM y RAM.2.6 Unidades de Entrada y Salida.2.6.1 Interfases.2.6.2 Puertos.2.7. Buses de Dirección, Datos, y Control.
UNIDAD 3. EL MICROPROCESADOR 80853.1 Características.3.2 Descripción de pines y señales básicas del microprocesador.3.3 Mapa de memoria y puertos.3.4 Conceptos Iniciales sobre DMA e Interrupciones.3.5 Alta Impedancia para el diseño de Buses.3.6 Ciclos de máquina e instrucción.3.7 Temporización.3.8 Sistema de Reset y Clock.3.9 Arquitectura básica usando el 8085.
UNIDAD 4. EL MICROPROCESADOR 8086 / 80884.1 Arquitectura del 8086/80884.2 Registros de trabajo y banderas. (Flags).4.3 Descripción de Pines 8086/8088.4.4 Modos de Direccionamiento4.5 Conceptos de traductores, intérpretes, compiladores y ensambladores.4.6 Lenguaje de Máquina y Ensamblador.4.7 Formato de una sentencia en Assembler.4.8 Instrucciones y Pseudo Instrucciones.4.9 Formatos de Datos e Instrucciones.4.10 Rutinas y Subrutinas, Uso de la Pila.4.11 Archivos. ASM, .HEX y .LST.
UNIDAD 5. PERIFÉRICOS PROGRAMABLES 5.1 Interfase paralela (PPI) 8255.5.2 Temporizador / Contador 8253.5.3 Interfase serial 8251.5.4 Controlador de DMA 8237.5.5 Controlador de interrupciones 8259.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 4/64
UNIDAD 6 ASSEMBLY PARA MICROPROCESADORES X86 6.1 Segmentos stack, data y code.6.2 Ensamblar, Enlazar y Correr un programa usando TASM o MASM.6.3 Instrucciones de salto y llamada: FAR y NEAR.6.4 Tipos de Datos y Definición6.5 Directivas ORG, DB, DUP, DW, EQU, DD, DQ, DT.6.6 Modelos de Memorias: Small, Medium, Compact, Large y Huge.6.7 Archivos EXE y COM.6.8 Suma, Resta, Multiplicación y División sin signo.6.9 Operaciones Lógicas.6.10 Operaciones BCD y ASCII.6.11 Rotación y Desplazamiento.6.12 Subrutinas
ORIENTACIONES METODOLÓGICAS.
6.1 Objetivos.- La metodología que se utilizará en las sesiones de clase
está orientada fundamentalmente a:
ƒ Estimular la reflexión, creatividad e independencia del estudiante, para que
este obtenga una mejor destreza de los conocimientos que adquiera.
ƒ Estimular las potencialidades de razonamiento del alumno a través
de situaciones que vinculen permanentemente los contenidos tanto
teóricos como prácticos para su aplicación.
ƒ Estimular la investigación tanto en el material bibliográfico como también en
la investigación en instituciones ya sea en el sector público como privado.
Actividades:
ƒ Método de Trabajo en grupo que será la herramienta principal para
dar solución a los problemas encontrados al realizar las tareas, buscando
que el grupo interactúe entre si y estableciendo nexos de cordialidad yafinidad, que faciliten el trabajo de cada estudiante.
ƒ Método de discusión, al presentar los contenidos teóricos de la materia al
estudiante, y que este aporte su punto de vista respecto a los mismos.
ƒ Método de Resolución de Problemas y ejercicios de programación
Medios.- Para el cabal cumplimiento de esta asignatura se utilizan las
herramientas de apoyo proporcionadas al alumno
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 5/64
Tarea - La resolución y exposición de ejercicios que tienen directa injerencia con
el objetivo de la asignatura.
SISTEMA DE EVALUACÓN.
La evaluación es un proceso permanente, donde se analiza
cualitativamente los cambios que se han efectuado en el alumno en relación con el
rendimiento académico y el nivel de desarrollo de la personalidad a lo largo de un
semestre; para cumplir con las evaluaciones se darán considerando los siguientes
parámetros:
ƒ El sistema de evaluación está estructurado sobre la base de las actividades
que usted realice en tutoría o en su casa.
ƒ Exámenes y trabajos de aplicación en los que el estudiante aplicará sus
conocimientos en forma práctica y periódica mediante evaluaciones orales y
escritas, a más de la presentación de los resultados obtenidos en sus
tareas
ƒ Las tareas serán presentadas en forma escrita y defendida, estas tareas
serán enviados a resolver de acuerdo a casos prácticos.
ƒ La asistencia regular y participativa en clase por parte del alumno.
Indicadores de evaluación
1. Capacidad de diseñar e implementar interfaces de control y de
comunicación
2. Orden y claridad en la escritura de programas
3. Presentación formal y puntual en tareas y exposiciones.
BIBLIOGRAFÍA DE LA ASIGNATURA.
La bibliografía a utilizar en esta asignatura es la siguiente
Básica:
1. GARCÍA Ciriaco: El Universo Digital del IBM PC ; 2º edición
2. INTEL Microprocessor an Peripheral Handbook
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 6/64
3. ZELENOVSKY Ricardo: El IBM PC para ingenieros eléctricos
El primer libo está disponible de manera libre en internet
Complementaria:
www.universodigital.com
www.pablin.com.ar
www.todorobot.com.ar
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 7/64
DESARROLLO DE LAS UNIDADES DIDÁCTICAS.
UNIDAD 1
SÍNTESIS DEL CONTENIDO
Introducción a los microprocesadores
Objetivo.- Comprender la importancia de los microprocesadores en la vida
moderna
1.1 HISTORIA DE LA ARQUITRCTURA DE LOS COMPUTADORES
Los computadores nacieron pesados, grandes y extraordinariamente caros. Inclusoen épocas relativamente "recientes", los ordenadores solo eran accesibles para
empresas e instituciones. Es cierto que a finales de los 60 empiezan a fabricarse
"minis", un tipo de ordenador accesibles a pequeñas y medianas empresas. Pero
desde luego, con un precio equivalente al que hoy tendría una vivienda mediana,
estaban muy alejados de lo que podríamos considerar
como informática personal.
En agosto de 1981 IBM hace algo insólito: sorprende a
todo el mundo con el lanzamiento de un ordenador
"Personal", el IBM PC 5150 ("Personal Computer"); algo
que parecía más un "divertimento" de los diseñadores de
IBM que un producto del Gigante Azul [3]. Más
sorprendente si cabe, fue la decisión de proporcionar
información y soporte a pequeñas empresas de software
y fabricantes de periféricos, para que pudieran fabricar complementos para elnuevo producto (esta decisión fue sin duda una de las claves de su éxito).
Este PC original estaba muy limitado en ciertos aspectos. Solo podía montar dos
disquetes de 160 KB, y se ofrecía con 16 KB de RAM, aunque la placa-base podía
contener 64 KB. y se podían instalar "hasta" 256 KB de memoria utilizando tarjetas
de expansión (cantidad que parecía astronómica en aquel entonces).
El producto se convirtió en un éxito inmediato que pronto excedió cualquier
expectativa imaginable. Se ha dicho hasta la saciedad que el éxito sorprendió a
El IBM PC modelo 5150
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 8/64
todo el mundo, incluyendo a sus creadores [4]. IBM había estimado unas ventas
del orden de 250.000 unidades en un periodo de cinco años; posteriormente esta
cifra se alcanzó mensualmente.
A principios de 1983 IBM lanza el PC XT ("PC eXTended") que incluye un disco
duro del que carecían los primeros modelos. A fin de año se anuncia el PC Jr. que
pasó a la historia con más pena que gloria.
En verano de 1984, junto con algunas mejoras de diseño, IBM incluye el
procesador 80286 como motor de la gama PC, dando lugar a la familia PC AT ("PC
Advanced Technology").
Además de las estrictamente técnicas, IBM había cometido algunas otrasimprevisiones en el diseño del PC, empezando una protección legal insuficiente (no
habían registrado las patentes adecuadas). Ante el fenomenal éxito del producto y
la proliferación de clónicos, decidió enmendar el entuerto diseñando una nueva
familia más avanzada técnicamente y de la que estaba patentado hasta el último
tornillo. La nueva serie, presentada en 1987, se denominaba PS/2 (Personal
System) y el bus MCA (Micro channel) utilizado era muy superior al ISA del PC [5].
Sin embargo, aún con sus defectos, el PC parecía tener vida propia, y a mediados
de los 80 escapó del control de sus creadores. Desde entonces la evolución de la
criatura ha venido dictada por las fuerzas del mercado.
El resto de la historia, hasta nuestros días, es de todos conocida. El PC ha
colocado en nuestros escritorios capacidades de proceso que hasta hace muy
poco solo eran concebibles en costosísimos mainframes o sofisticadas
workstations. Recientemente leía un informe señalando que en verano del 2002,
poco más de 20 años después del lanzamiento del primer PC, la industria del PC
había alcanzado la cifra de mil millones de PCs vendidos.
1.2 FAMILIAS DE MICROPROCESADORES
En la tabla adjunta se muestran las características principales de los procesadores
más utilizados.
Modelo Transistores Velocidad del núcleo Caché L2 Velocidad bus frontal
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 9/64
Celeron 7,500,000 1.06 GHz - 2 GHz 256 KB 133 MHz y 400 MHz
Pentium II 7,500,000 233 MHz - 450 MHz 512 KB 100 MHz
Pentium III 9,500,000 450 MHz - 1 GHz 256 KB 133 MHz
Pentium III Xeon 28,100,000 500 MHz - 1 GHz 256 KB - 2 MB 100 MHz
Pentium 4 55,000,000 1.4 GHz - 3.4 GHz 256 KB 800 MHz
K6-II 9,300,000 500 MHz - 550 MHz N/A 100 MHz
K6-III 21,300,000 400 MHz - 450 MHz 256 KB 100 MHz
Athlon (K7) 22,000,000 850 MHz - 1.2 GHz 256 KB 200 MHz y 266 MHz
Athlon XP 37,500,000 1.67 GHz 384 KB 266 MHz
Duron N/A 700-800 MHz 64 KB 200 MHz
PowerPC G3 6,500,000 233 MHz - 333 MHz 512 KB, 1 MB 100 MHz
PowerPC G4 10,500,000 400 MHz - 800 MHz 1 MB 100 MHz
Athlon 64 105,900,000 800 MHz 1 MB 1.6 GHz
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 10/64
UNIDAD2
ARQUITECTURADEL PC
Objetivo.- Conocer el funcionamiento interno de un PC
2.1 ARQUITECTURA DEL COMPUTADOR
Cuando se habla de arquitectura del ordenador se está refiriendo al
hardware. El hardware del ordenador sigue el modelo estructural básico definido
por la arquitectura de Von Neumam, es el que se muestra en la figura.
– La ALU es donde se ejecutan las instrucciones de los programas.
– La unidad de control es el dispositivo para coordinar y controlar el
funcionamiento de los restantes elementos del ordenador.
– La memoria es el lugar donde se guardan las instrucciones y los datos del
programa, en ella se puede escribir y leer todas las veces que se necesite.
– La unidad de entrada y salida es el dispositivo que se encarga de recibir la
información del exterior desde el teclado, ratón, disco duro, etc., y de devolver los
resultados al exterior a través del monitor, impresora, disco duro, etc.
– Los ordenadores incorporan un reloj interno que, entre otras funciones
sirve para que la unidad de control pueda repartir su tiempo entre las distintas
tareas que realiza.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 11/64
A todos estos elementos
se le llama Unidad Central de
Procesos más conocida por
sus siglas en inglés CPU .
Otros autores consideran que
la CPU solo está formada por la
ALU y la Unidad de Control, ya
que estos dos elementos están
construidos en un solo circuito
integrado, llamado
microprocesador.
Ver un ordenador funcionando forma ya parte de la cotidianidad. Trabajar con un
procesador de textos, controlar las cuentas del banco o navegar por Internet, son
acciones cotidianas que no requieren prácticamente ningún conocimiento técnico
sobre el funcionamiento del ordenador. En multitud de ocasiones el PC se
convierte en un instrumento de uso tan habitual que llega a olvidarse la enorme
cantidad de tecnología que hace posible su funcionamiento.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 12/64
Aunque el PC se arranca pulsando un botón de forma tan simple como cuando se
enciende un televisor, su estructura interna no puede explicarse como un circuito
eléctrico por el que llega la corriente que permite a todos sus componentes
encenderse y empezar a funcionar. Cada uno de los componentes de un ordenadortiene unas tareas asignadas y requiere del resto de los componentes para cumplir
su cometido, que no es otro que procesar la información que recibe.
Básicamente, el funcionamiento de un PC se divide en cuatro grupos de tareas:
la CPU procesa los datos que recibe
la memoria almacena la información tanto por procesar como ya procesada
los puertos de entrada reciben la información para procesarla o almacenarla
los puertos de salida la sacan del ordenador después de su procesamiento.
Para que esta estructura funcione, todos los elementos que componen un
ordenador deben comunicarse entre sí, de forma que la información pueda circular
entre los distintos grupos de tareas.
De esta comunicación interna se encarga el bus del sistema que interconecta loscomponentes básicos del PC.
2.2 .- Funcionamiento
Cuando el PC está en marcha, el microprocesador es el elemento encargado de
manipular la información que circula por el ordenador y de controlar gran parte de
las tareas restantes llevadas a cabo por otros componentes.
El funcionamiento del PC consiste en la ejecución de programas, lo que significa
que se basa en la interpretación de series de instrucciones que el microprocesador
recibe, estas instrucciones le son facilitadas por la memoria.
La intercomunicación entre la memoria y el microprocesador es una transmisión de
información que se efectúa a través de buses de datos.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 13/64
Físicamente, tanto el procesador como la memoria, se conectan a la placa base, un
circuito impreso de grandes dimensiones sobre el que se monta el PC, e integra los
circuitos que los interconectan, que constituyen el bus del sistema.
Los primeros IBM PC contaban con un bus que interconectaba todos los
componentes del PC de igual a igual. Con el tiempo esta estructura inicial demostró
no ser capaz de absorber los caudales de datos que requerían todos los
componentes; empezó a fraccionarse y especializarse propiciando la aparición de
nuevos buses de datos y direcciones.
En la actualidad los ordenadores se estructuran internamente en función del
microprocesador y del chipset, que no es más que un conjunto de integrados que
se encarga de enlazar y gestionar los distintos buses que hay en la placa base. Los
PC's tienen un bus del sistema que conecta la RAM, el microprocesador y la
memoria caché.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 14/64
Dependiendo del ancho de banda de los buses de datos puede estar formado por
8,16, 32 o 64 bits.
Para que el bus del sistema pueda comunicarse con el resto de dispositivos del
PC, el chipset le pone en contacto con el bus PCI.
Para conectar los periféricos al PC, el bus PCI incorpora a la placa base ranuras de
expansión por las que los periféricos pueden contactar con el bus.
Para mantener la compatibilidad con las tarjetas de ampliación ISA los chipsets
facilitan una pasarela de conexión entre el bus PCI y el ISA. junto a las ranuras de
expansión PCI suelen haber ranuras ISA que permiten conectar periféricos que
requieren una capacidad de transferencia muy pequeña.
También el nuevo bus AGP está conectado con el chipset a una frecuencia de 66 o
100 MHz. Gracias al bus AGP, la tarjeta de vídeo pasa de conectarse del bus PCI a
estar conectada directamente al bus del sistema, acelerando enormemente los
procesos.
2.3 La memoria
Básicamente, la memoria puede dividirse en dos tipos, la RAM y la ROM. Ambos
tipos almacenan los datos en forma de instrucciones que el microprocesador puede
ejecutar.
La gran diferencia entre la memoria RAM y la ROM es la forma en que cada una de
ellas mantiene la información. El microprocesador puede almacenar y recuperar
datos en la memoria RAM de forma ágil y rápida, pero éstos se pierden aldesconectar la máquina. En el caso de la memoria ROM el procesador no puede
almacenar información, sólo leerla, pero, al contrario de lo que sucede con la
memoria RAM, su contenido no se pierde cuando se desconecta el ordenador.
Gracias a esta característica de la memoria ROM, cuando se arranca el ordenador,
el microprocesador puede recuperar, desde ella, el programa que va a permitirle
empezar a funcionar.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 15/64
Este programa de arranque forma parte del BIOS, junto al programa que permite
inicializar el ordenador, el BIOS cuenta con una serie de rutinas de apoyo que son
las que permiten que el PC reconozca todos los periféricos conectados a él.
De la misma forma que la memoria RAM, el BIOS también está conectado al bus
del sistema.
2.4 EL MICROPROCESADOR
El microprocesador es, a un mismo tiempo, el motor y el cerebro del ordenador, el
encargado de efectuar todos los cálculos y procesos que le permiten funcionar. Por
lo tanto, no es extraño que sea el componente más caro del interior del PC,pudiendo alcanzar un coste equivalente a dos o tres veces el de la placa base
donde se aloja.
Es un tipo de componente electrónico en cuyo interior existen millones de
elementos llamados transistores, cuya combinación permite realizar el trabajo que
tenga encomendado el microprocesador.
El microprocesador, o procesador, ejecuta las instrucciones y cálculos que formanlos programas, a la vez que se encarga de enviar y recibir tanto la información que
necesitan como la que generan todos los componentes del PC.
A veces al micro se le denomina "la CPU" (Central Process Unit , Unidad Central de
Proceso), aunque este término tiene cierta ambigüedad, pues también puede
referirse a toda la caja que contiene la placa base, el micro, las tarjetas y el resto
de la circuitería principal del ordenador.
Para que un PC aproveche al máximo el rendimiento de su procesador, tanto los
módulos de memoria, como el disco duro, el adaptador de video, etc., deberán
poseer un nivel de prestaciones idéntico o superior al suyo.
Partes de un microprocesador
En un micro podemos diferenciar diversas partes:
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 16/64
o el encapsulado : es lo que rodea a la oblea de silicio en sí, para darle
consistencia, impedir su deterioro (por ejemplo por oxidación con el aire)
y permitir el enlace con los conectores externos que lo acoplarán a su
zócalo o a la placa base.o la memoria caché : una memoria ultrarrápida que sirve al micro para tener
a mano ciertos datos que previsiblemente serán utilizados en las
siguientes operaciones sin tener que acudir a la memoria RAM,
reduciendo el tiempo de espera. Es lo que se conoce como caché de
primer nivel ; es decir, la que está más cerca del micro, tanto que está
encapsulada junto a él. Todos los micros tipo Intel desde el 486 tienen
esta memoria, también llamada caché interna .o el coprocesador matemático : o, más correctamente, la FPU (Floating
Point Unit , Unidad de coma Flotante). Parte del micro especializada en
esa clase de cálculos matemáticos; también puede estar en el exterior
del micro, en otro chip.
o el resto del micro : el cual tiene varias partes (unidad de enteros,
registros, etc.) que no merece la pena detallar.
2.5 Interfaces El término interfaz es de uso muy frecuente en informática. Es un concepto
abstracto, que puede referirse a un dispositivo físico (hardware) o a un dispositivo
lógico (software), aunque lo común es que se trate de una mezcla de ambos. Se
refiere al ámbito de conexión entre dos sistemas.
En este capítulo intentaremos mostrar una panorámica general de las interfaces
entre los dispositivos externos (discos generalmente) y la placa base. La evolución
de las interfaces está íntimamente asociada con dos tipos de dispositivos: las
unidades de disco y las controladoras gráficas. Ya que son estos dispositivos, los
que han propiciado las mejoras en los sistemas de conexión existentes.
La capacidad y velocidad de los equipos informáticos se doble aproximadamente
cada dos años, y los discos duros no son una excepción. Su velocidad de
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 17/64
transferencia se dobla más o menos cada 24 meses, lo que ha exigido la mejora de
las interfaces utilizadas. La historia resumida es la siguiente:
ST506/412 Es la interfaz original desarrollada por Seagate Technology en
1978 para soportar sus discos ST-506 y ST-412; de 5 y 10 MB de capacidad
respectivamente!. La electrónica de control esta situada en la tarjeta
adaptadora, que se inserta en un "slot" de la placa base, y se une al disco
mediante dos cables; uno de control y otro de datos.
ESDI ("Enhanced Small Device Interface"). Desde 1983. Fue desarrollada
por Maxtor Corporation, un conocido fabricante de discos, como una mejora
de la tradicional ST-506/412. La principal novedad es que el sistema de
codificación/decodificación de la señal, una de las partes más críticas de un
disco, está situada en la propia unidad de disco, lo que permite
comunicaciones más rápidas con la controladora y unidades de más
capacidad. Mantiene el mismo sistema de cables que sus predecesoras,
aunque utilizados de otra forma. Fue muy popular, incluso llegó a ser un
estándar ANSI, aunque actualmente (2003) está en desuso.
IDE/ATA ("Integrated Drive Electronics/AT Attachment"). Desde 1986
SCSI Desde 1986 a la actualidad
PCI ("Peripheral Component Interconnect"). Nacida en 1992
S-ATA ("Serial ATA"). Una evolución del anterior que utiliza un cable serie
para comunicar la placa con el dispositivo
ORIENTACION METODOLÓGICA PARA EL APRENDIZAJE
Repasar textos de electrónica y diseño electrónico
Consultar las especificaciones técnicas (carpeta DataSheets) de los
dispositivos que se utilizarán (diodos, triacs, etc.)
Calcular el valor de las resistencias necesarias para limitar la corriente que
atraviesa un led
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 18/64
UNIDAD3
EL PROCESADOR 8085
Objetivo.- Conocer el funcionamiento interno de los microprocesadores
Se distinguen 3 bloques de memoria
Memoria de programa. Contiene el programa con las instrucciones que
gobiernan la aplicación. Es de tipo no volátil
Memoria de datos RAM. Se destina a guardar las variables y datos. Es
volátil
Memoria EEPROM de datos. Es una pequeña área de memoria de datos dela lectura y escritura no volátil, gracias a la cual, un corte del suministro de la
alimentación no ocasiona la pérdida de la información. Que estará disponible
al reiniciarse el programa
El Intel 8085 es un procesador de 8 bits fabricado por Intel a mediados de los 70.
Era binariamente compatible con el anterior Intel 8080 pero exigía menos soporte
de hardware, así permitía unos sistemas de microordenadores más simples y más
baratos de hacer.
El número 5 de la numeración del procesador proviene del hecho que solamente
requería una alimentación de 5 voltios, no como el 8080 que necesitaba unas
alimentaciones de 5 y 12 voltios. Ambos procesadores fueron usados alguna vez
en ordenadores corriendo el sistema operativo CP/M, y el procesador 8085 fue
usado como un microcontrolador.
Ambos diseños fueron sobrepasados por el Z80 que era más compatible y mejor,
que se llevó todo el mercado de los ordenadores CP/M, al mismo tiempo que
participaba en la prosperidad del mercado de los ordenadores personales en
mediados de los 80.
Longitud de palabra
La longitud de palabra del microprocesador intel 8085 es de 8 bits, o lo que es lo
mismo, 1 byte.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 19/64
Bus de datos
El bus de datos tiene un tamaño de 8 bits y por lo tanto el registro MDR tiene ese
mismo tamaño. Además esto implica que el microprocesador sólo podrá leer y
escribir datos de 8 bits.
Bus de direcciones
El bus de direcciones tiene un tamaño de 8 bits. Para dar una dirección de 16 bit ,
usa los 8bits del bus de datos y los 8 bits del bus de direcciones, ahorrando
terminales (patillas) multiplexando en el tiempo el bus de datos y el de direcciones.
Esto implica que se pueden direccionar 64k posiciones de memoria. Para poder
multiplexar estas líneas utiliza una patilla que da un pulso ALE en el primer estadode cada ciclo máquina, dejando en alta impedancia el bus de datos en el siguiente
estado hasta la activación de las líneas de control R/W, esto ocurre cuando vamos
a utilizar tanto direcciones como datos. Cuando se direcciona a dispositivos de
entrada/salida(puertos), la información de direccionamiento aparece duplicada, es
decir, las líneas AD(0-7) y AD(8-15) llevarán los mismos datos, y esto se debe a
que con 256 bits para esta CPU era suficiente en lo que se refiere a
direccionamiento de puertos.
El bus de datos y direcciones está multiplexado
El bus de datos y direcciones está multiplexado en el tiempo, esto significa que
comparten algunas patillas (o pines). Como el bus de direcciones utiliza 16 patillas
y el de datos sólo 8, 8 de las patillas del bus de direcciones se utilizan también para
el de datos. Con esto se consigue reducir el número de patillas de 24 a 16.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 20/64
Registros Programables
Posee 7 registros programables de 8 bits (A,B,C,D,E,H,L) algunos de los cuales
pueden utilizarse por parejas (BC, DE, HL). El registro A se denomina acumuladory tiene gran importancia
ORIENTACIÓN METODOLÓGICA PARA EL PARENDIZAJE
Lea detenidamente el capítulo 4 del texto básico, así como los documentos
“Memoria de programa.pdf”, “Memoria de datos.pdf”, “Memoria
EEPROM.pdf” del material de apoyo
Esboce diagramas que ilustren la distribución de la memoria física delmicrocontrolador. Ponga especial atención a las direcciones que se dan, y al
segmento de memoria que ocupa esas direcciones.
Enumere los registros de operaciones especiales y los de propósito
general.¿Para qué sirven cada uno de ellos¿
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 21/64
UNIDAD 4
EL PROCESADOR 8086
Objetivo.- Conocer el fundamento de los procesadores actuales
Los Intel 8086 e Intel 8088 (i8086, llamado oficialmente iAPX 86, e i8088) son dos
microprocesadores de 16 bits diseñados por Intel en 1978, iniciadores de la
arquitectura x86. La diferencia entre el i8086 y el i8088 es que este último utiliza un
bus externo de 8 bits, para poder emplear circuitos de soporte al microprocesador
más económicos, en contraposición al bus de 16 bits del i8086..
Esquema
Esquema de bloques del microprocesador Intel 8086 (el Intel 8088 es muy similar).
1. Registros generales y de índice (AX,BX, CX, DX y SI, DI, BP, SP)
2. Registros de segmento (CS, DS, ES, SS)
3. Sumador de direcciones
4. Bus de direcciones (20 bits, es decir, 220 direcciones = 1 MB dedireccionamiento)
5. Queue de instrucciones (cola de instrucciones)
6. Unidad de ejecución (EU)
7. Lógica de control del bus??
8. Bus de datos de la ALU (16 bits)
9. Unidad Aritmético Lógica (ALU)
10. Bus de direcciones
11. Bus de datos
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 22/64
12. Bus de control
Registros
Registros de propósito general
AH AL AX (Acumulador)
BH BL BX (Base)CH CL CX (Contador)
DH DL DX (Datos)
Registros índices
SI Source Index (Índice origen)
DI Destination Index (Índice Destino)
BP Base Pointer (Puntero Base)
SP Stack Pointer (Puntero de Pila)
Registro de Bandera - - - - O D I T S Z - A - P - C Flags (Banderas)
Registros de Segmentos CS Code Segment (Segmento de
Código)
DS Data Segment (Segmento deDatos)
ES ExtraSegment (Segmento Extra)
SS Stack Segment (Segmento de Pila)
Registro apuntador de instrucciones
IP Instruction Pointer
Modelo de los registros
Los registros del i8086 e i8088 se basaron en el diseño del Intel 8080 y el Intel
8085, y de hecho son compatibles a nivel de ensamblador con el i8080. El conjunto
de registros también es similar al del i8080, pero ampliados a 16 bits. Tanto el
i8086 como el i8088 tienen cuatro registros generales de 16 bits, que también
pueden ser accedidos como ocho registros de 8 bits, y tienen cuatro registros
índice de 16 bits (incluyendo el puntero de pila). Los registros de datos se usan a
veces de forma implícita por las instrucciones, haciendo más difícil la organización
de los registros para emplearlos con valores temporales.
Los registros del procesador, se dedican a almacenar posiciones de memoria ya
que el acceso a los registros es mucho más rápido que los accesos a memoria, y
se emplean para controlar instrucciones en ejecución, manejar direccionamiento de
memoria y proporcionar capacidad aritmética. Los registros son direccionables por
medio de un nombre.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 23/64
Registros de Propósito General
Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del
sistema. Son únicos en el sentido de que se les puede direccionar como una
palabra o como un byte. Dado que estos registros se pueden utilizar "comodeseamos" (dentro de la tipología de los datos), existe una definición para cada
uno de ellos según la función que desarrollen y es recomendable utilizar-los
adecuadamente según esa definición , ya que algunas instrucciones del
procesador 8086 se utilizan solamente para un registro específico, optimizando así
el código.
Registro AX: El registro AX es el registro acumulador, es utilizado para
operaciones que implican entrada/salida y la mayor parte de la aritmética.
Registro BX: El registro BX es el registro base, y es el único registro de propósito
general que puede ser un índice para direccionamiento indexado. También es
común emplear el BX para cálculos.
Registro CX: El registro CX es conocido como el registro contador. Puede
contener un valor para controlar el número de veces que un ciclo se repite o un
valor para corrimiento de bits.
Registro DX: El registro DX es el registro de datos. Algunas operaciones de
entrada/salida requieren su pulso, y las operaciones de multiplicación y división con
cifras grandes suponen al DX y AX trabajando juntos.
Registros Índice
Los registros SI y DI disponibles para direccionamiento indexado y para sumas y
restas.
Registro SI: El registro índice fuente de 16 bits es requerido por algunas
operaciones con cadenas de caracteres. El SI está asociado con el registro DS.
Registro DI: El registro índice destino también es requerido por algunas
operaciones con cadenas de caracteres. El DI está asociado con el registro ES.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 24/64
Registros Apuntadores
Los registros SP (apuntador de pila) y BP (apuntador base) están asociados con el
registro SS y permiten al sistema acceder a datos en el segmento de la pila.
Registro SP: El apuntador de pila de 16 bits está asociado con el registro SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que está
siendo procesada en la pila. El sistema maneja de manera automática este
registro.
Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros, los
cuales son datos y direcciones transmitidos vía la pila.
Registros de Banderas
Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual
de la máquina y el resultado del procesamiento. Muchas instrucciones aritméticas y
de comparación cambian el estado de las banderas y apoyándose de ellas
determinan la acción subsecuente. Veamos como se reparten y que bits son los
que sirven para indicar el estado actual de la máquina tal y como hemos
comentado anteriormente:
Debemos tener en cuenta que esta tabla contiene 16 posiciones (de 0 a 15), que
son los 16 bits del registro de banderas y que por convenio los bits de un registro
se ordenan de derecha a izquierda, es decir, la posición 0 la encontraremos a la
derecha y la posición 15 a la izquierda.
- - - - OF DF IF TF SF ZF - AF - PF - CF
Los bits de las banderas son las siguientes:
OF (overflow, desbordamiento): Indica desbordamiento del bit de mayor orden
después de una operación aritmética de números signados (1=existe overflow;
0=no existe overflow). Para operaciones sin signo, no se toma en cuenta esta
bandera.
DF (dirección): Controla la selección de incremento o decremento de los registros
SI o DI en las operaciones con cadenas de caracteres (1=decremento automático;
0=incremento). La bandera DF se controla con las instrucciones STD y CLD.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 25/64
IF (interrupción): Indica que una interrupción externa sea procesada o ignorada
(1=habilita la interrupción; 0=deshabilita la interrupción). El estado de la bandera IF
se controla con las instrucciones STI y CLI.
TF (trampa): Permite la operación del procesador en modo de depuración (paso a
paso)
SF (signo): Contiene el signo resultante de una operación aritmética (0=positivo;
1=negativo).
ZF (cero): Indica el resultado de una operación aritmética o de comparación
(0=resultado diferente de cero; 1=resultado igual a cero).
AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8 bits,
para aritmética especializada. Esta bandera se prueba con las instrucciones DAA y
DAS para ajustar el valor de AL después de una suma o resta BCD.
PF (paridad): Indica paridad par o impar en una operación de datos de ocho bits
(0=paridad impar; 1=paridad par).
CF (acarreo): Contiene el acarreo de los bits de mayor orden después de una
operación aritmética; también almacena el contenido del último bit en unaoperación de corrimiento o de rotación.
Registros de Segmento
Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas
áreas pueden solaparse total o parcialmente. No es posible acceder a una posición
de memoria no definida por algún segmento: si es preciso, habrá de moverse
alguno.
Registro CS: El DOS almacena la dirección inicial del segmento de código de un
programa en el registro CS. Esta dirección de segmento, más un valor de
desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de
una instrucción que es buscada para su ejecución. Para propósitos de
programación normal, no se necesita referenciar el registro CS.
Registro DS: La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 26/64
una instrucción, genera una referencia a la localidad de un byte específico en el
segmento de datos.
Registro SS: El registro SS permite la colocación en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de
inicio del segmento de pila de un programa en el registro SS. Esta dirección de
segmento, más un valor de desplazamiento en el registro del apuntador de la pila
(SP), indica la palabra actual en la pila que está siendo direccionada. Para
propósitos de programación normal, no se necesita referenciar el registro SS.
Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro
extra de segmento para manejar el direccionamiento de memoria. El registro ES
está asociado con el registro DI (Índice). Un programa que requiere el uso del
registro ES puede inicializarlo con una dirección de segmento apropiada.
Registro Apuntador de Instrucciones
El registro IP de 16 bits contiene el desplazamiento de dirección de la siguiente
instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de
que el IP indica la instrucción actual dentro del segmento de código que se está
ejecutando actualmente en la memoria.
Acceso a memoria
Ambos microprocesadores tienen un rango de entrada/salida de 64 Kbytes e
interrupciones vectorizadas fijas. La mayoría de las instrucciones solo pueden
acceder a una posición de memoria, por lo que un operando debe ser
forzosamente un registro. El resultado se almacena en uno de los operandos.
Los i8086 e i8088 presentan cuatro registros de segmento (CS, DS, ES y SS), quese pueden establecer a partir de los registros índice. Debido a que estos
procesadores pueden direccionar hasta 1 MB de memoria, para lo que son
necesarios 20 bits, ya que sus registros son de 16 bits, es necesario emplear
registros de segmento para acceder a toda la memoria. En lugar de suministrar los
bits faltantes, como la mayoría de los procesadores segmentados, el i8086 y el
i8088 desplazan un registro de segmento 4 bits hacia la izquierda y lo suman a la
dirección de memoria, siendo el resultado la dirección efectiva. Esto suele ser
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 27/64
considerado como un mal diseño, aunque puede ser aceptable, e incluso útil en el
lenguaje ensamblador. Por el contrario, provoca confusión cuando se hace un uso
extensivo de los punteros (como en el lenguaje C), debido a que es posible que
dos punteros con diferentes valores apunten a la misma dirección de memoria.Peor aún, este esquema de registros solapados hace difícil expandir el mapa de
memoria a más de 1 MB, y de hecho, esto se cambió en el Intel 80286.
Patillaje
Pines del 8086 y del 8088. La líneas del bus de direcciones se ven en rojo, las del
bus de datos en azul y las del bus de control en verde. Las líneas del bus de
energía se ven en negro. Estos procesadores multiplexan en tiempo el bus de
direcciones, con el bus de datos y control. En el 8086 se ven los pines del 2 al 16 ylos pines 35 al 39 con doble funcionalidad, en un momento determinado
transportan la dirección y en otro momento entran o salen los datos (o sale
información de algunas líneas del bus de control).
En el 8088 se comparten los pines 9 al 16 entre el bus de direcciones y de datos, y
los pines 35 al 38 entre el bus de direcciones y el de control .
Pines del 8086 Mejorado+--\/--+
GND 1| |40 Vcc (+5V)
<-- A14 <-> D14 2| |39 A15 --> D15 <->
<-- A13 <-> D13 3| |38 A16 --> S3 -->
<-- A12 <-> D12 4| |37 A17 --> S4 -->
<-- A11 <-> D11 5| |36 A18 --> S5 -->
<-- A10 <-> D10 6| |35 A19 --> S6 -->
<-- A9 <-> D9 7| |34 !BHE/S7 -->
<-- A8 <-> D8 8| |33 MN/!MX <--
<-- A7 <-> D7 9| Intel|32 !RD -->
<-- A6 <-> D6 10| 8086 |31 HOLD, !RQ/!GTO <->
<-- A5 <-> D5 11| |30 HLDA, !RQ/!GT1 <->
<-- A4 <-> D4 12| |29 !WR, !LOOK --><-- A3 <-> D3 13| |28 M/!IO, !S2 -->
<-- A2 <-> D2 14| |27 DT/!R, !S1 -->
<-- A1 <-> D1 15| |26 !DEN, !S0 -->
<-- A0 <-> D0 16| |25 ALE, QS0 -->
--> NMI 17| |24 !INTA, QS1 -->
-->INTR 18| |23 !TEST <--
--> CLK 19| |22 READY <--
GND 20| |21 RESET <--
+------+
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 28/64
Pines del 8088
Además del bus externo de datos, que se reduce a 8 bits, la diferencia con el 8086
es mínima)
+--\_/--+
GND 1| |40 Vcc (+5V)
<-- A14 2| |39 A15 -->
<-- A13 3| |38 A16 --> S3 -->
<-- A12 4| |37 A17 --> S4 -->
<-- A11 5| |36 A18 --> S5 -->
<-- A10 6| |35 A19 --> S6 -->
<-- A9 7| |34 !SSO....HIGH, -->
<-- A8 8| |33 MN/!MX <--
<-> D7 <-- A7 9| Intel |32 !RD -->
<-> D6 <-- A6 10| 8088 |31 HOLD....!RQ/!GTO <->
<-> D5 <-- A5 11| |30 HLDA....!RQ/!GT1 <->
<-> D4 <-- A4 12| |29 !WR.....!LOOK -->
<-> D3 <-- A3 13| |28 M/!IO...!S2 --><-> D2 <-- A2 14| |27 DT/!R...!S1 -->
<-> D1 <-- A1 15| |26 !DEN....!S0 -->
<-> D0 <-- A0 16| |25 ALE.....QS0 -->
--> NMI 17| |24 !INTA...QS1 -->
-->INTR 18| |23 !TEST <--
--> CLK 19| |22 READY <--
GND 20| |21 RESET <--
+-------+
Velocidad
La frecuencia del reloj del i8086 e i8088 se sitúa entre 4,77 MHz y 10 MHz.
A continuación se muestra el número de ciclos, aproximados, necesarios para
hacer algunas operaciones:
Suma: 3 - 4 (registro), 9+EA - 25+EA (acceso a memoria)
Multiplicación: 70 - 118 (registro), 76+EA - 143+EA (acceso a memoria)
Movimiento de datos: 2 (registro), 8+EA - 14+EA (acceso a memoria)
Salto cercano: 11 - 15, 18+EA (acceso a memoria)
Salto lejano: 15, 24+EA (acceso a memoria)
EA: tiempo necesario para calcular la dirección de memoria efectiva, que va de 5 a
12 ciclos.
Coprocesador numérico
Ambos microprocesadores no tienen ninguna instrucción de coma flotante, pero se
les puede añadir un coprocesador matemático para añadirles dichas instrucciones.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 29/64
El Intel 8087 era el coprocesador matemático más común, pero otros fabricantes
como Weitek ofrecían otras alternativas con mayor rendimiento.
.
ORIENTACION METODOLÓGICA PARA EL APRENDIZAJE Leer el capítulo 6 del texto básico
Con sus propias palabras describa las normas de estilo que deben seguirse
para escribir programas.
¿Por qué deben seguirse estas normas?. ¿Correrá un programa escrito sin
seguir las normas de estilo?
Escriba las instrucciones para seleccionar las líneas de puerto con que se
quiere trabajar
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 30/64
UNIDAD5
PERIFÉRICOS
PROGRAMABLES
Objetivo.- Comprender las técnicas de comunicación que se implementan en
el PC.
5.1 Interfaz paralela
En un periférico programable de E/S y de aplicación general, compatible con los
microprocesadores 8080 y 8085. Dispone de un total de 24 líneas de E7S. Los
canales se queden agrupar en puertas, según tres modos diferentes de
programación. Sus características básicas son:
24 líneas de E/S programables.
Compatible con niveles TTL.
Control Set/Reset sobre cualquier línea.
Alimentación simple de 5V.
Encapsulado DIL 40.
Potencia de disipación 1W.
CONSTITUCION INTERNA
En un buffer bidireccional con control de alta impedancia utilizado para
interconectar al periférico con el bus de datos del sistema procesador. Los datos se
trasmiten o reciben del periférico mediante instrucciones de OUT o de IN del
microprocesador, respectivamente. A través de este buffer también se transfieren
las palabras de programación y de status
BLOQUE DE CONTROL Y LECTURA-ESCRITURA.
La función de este bloque es controlar las transferencias internas de los datos.
Recoge la información de dirección y las señales de control provenientes del
microprocesador, empleando las siguientes líneas:
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 31/64
CS (chip selec): un nivel bajo en esta entrada habilita la intercomunicación
entre el microprocesador y el periférico.
RD (read): un nivel “0” habilita al 8255 para enviar el dato al
microprocesador a través del bus de datos.
WR (write): un nivel bajo habilita el microprocesador para escribir datos o
palabras de control en el 8255.
A0 y A1: Estas señales de entrada, junto con las de lectura o escritura RD o
WR controlan la selección de una de las tres puertas o del registro de
programación.
Estas entradas van normalmente conectadas a los 2 bits menos significativos del
bus de direcciones.
-RESET: un nivel ”1” en esta entrada borra el registro de control y todas las líneas
quedan programadas en el modo de entrada.
El efecto combinado de todas estas líneas se detalla en la tabla siguiente:
BLOQUE DE CONTROL A Y B.
El modo de funcionamiento de cada una de las puertas queda programado por
software. La palabra de control que escribe el microprocesador sobre el periférico
contiene la información del modo, bit activado, etc. y todo ello sirve para inicializar
a dicho periférico.
Cada uno de los bloques de control acepta comandos de programación para las
puertas asociadas a el.
Control grupo A: puerta a y puerta C alta (C7 a C4).
Control grupo B: puerta B y puerta c baja (C3 a C0).
En el registro de Control de palabra solamente se puede escribir y no se permiten
operaciones de lectura.
PUERTAS A, B Y C
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 32/64
Son tres puertas de 8 bits cada una. Todas ellas son programables de diferentes
maneras mediante las adecuadas palabras de programación. A continuación se
especifica el comportamiento de cada una de las puertas.
Puerta A : puede ser una puerta de 8 salidas con posibilidad de latch.
También se puede programar como puerta de entrada latcheada .
Puerta B : puede ser una puerta de 8 entrada o salida con posibilidad de
latch o no , una puerta de 8 entradas sin lachear .
Puerta C : Puede ser una puerta de 8 líneas de salida lacheada o no , o una
puerta de 8 líneas de entradas sin lachear , además esta puerta se puede
dividir en dos puertas de 4 bits , cada una de las cuales contiene un latchpara cada línea y puede utilizarse para señales de control o estado con las
puertas A y B.
5.2 Interfaz Serial
La interfaz RS-232 está diseñada para distancias cortas, de hasta 15 metros según
la norma, y para velocidades de comunicación bajas, de no más de
20 Kilobytes/segundo. A pesar de ello, muchas veces se utiliza a mayores
velocidades con un resultado aceptable. La interfaz puede trabajar en
comunicación asíncrona o síncrona y tipos de canal simplex, half duplex o full
duplex. En un canal simplex los datos siempre viajarán en una dirección, por
ejemplo desde DCE a DTE. En un canal half duplex, los datos pueden viajar en
una u otra dirección, pero sólo durante un determinado periodo de tiempo; luego la
línea debe ser conmutada antes que los datos puedan viajar en la otra dirección.
En un canal full duplex, los datos pueden viajar en ambos sentidos
simultáneamente. Las líneas de handshaking de la RS-232 se usan para resolverlos problemas asociados con este modo de operación, tal como en qué dirección
los datos deben viajar en un instante determinado.
Si un dispositivo de los que están conectados a una interfaz RS-232 procesa los
datos a una velocidad menor de la que los recibe deben de conectarse las líneas
handshaking que permiten realizar un control de flujo tal que al dispositivo más
lento le de tiempo de procesar la información. Las líneas de "hand shaking " que
permiten hacer este control de flujo son las líneas RTS y CTS. Los diseñadores del
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 33/64
estándar no concibieron estas líneas para que funcionen de este modo, pero dada
su utilidad en cada interfaz posterior se incluye este modo de uso
Los circuitos y sus definiciones
Las UART o U(S)ART (Transmisor y Receptor Síncrono Asíncrono Universal) se
diseñaron para convertir las señales que maneja la CPU y transmitirlas al exterior.
Las UART deben resolver problemas tales como la conversión de voltajes internos
del DCE con respecto al DTE, gobernar las señales de control, y realizar la
transformación desde el bus de datos de señales en paralelo a serie y viceversa.
Debe ser robusta y deberá tolerar circuitos abiertos, cortocircuitos y escritura
simultánea sobre un mismo pin, entre otras consideraciones. Es en la UART en
donde se implementa la interfaz.
Para los propósitos de la RS-232 estándar, una conexión es definida por un cable
desde un dispositivo al otro. Hay 25 conexiones en la especificación completa, pero
es muy probable que se encuentren menos de la mitad de éstas en una interfaz
determinada. La causa es simple, una interfaz full duplex puede obtenerse con
solamente 3 cables.
Existe una cierta confusión asociada a los nombres de las señales utilizadas,
principalmente porque hay tres convenios diferentes de denominación (nombre
común, nombre asignado por la EIA, y nombre asignado por el CCITT).
En la siguiente tabla se muestran los tres nombres junto al número de pin del
conector al que está asignado (los nombres de señal están desde el punto de vista
del DTE (por ejemplo para Transmit Data los datos son enviados por el DTE, pero
recibidos por el DCE).
5.3 Acceso Directo a Memoria
El acceso directo a memoria (DMA, del inglés Direct Memory Access) permite a
cierto tipo de componentes de ordenador acceder a la memoria del sistema para
leer o escribir independientemente de la CPU principal. Muchos sistemas hardware
utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y
tarjetas de sonido. DMA es una característica esencial en todos los ordenadores
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 34/64
modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin
someter a la CPU a una carga masiva de interrupciones.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de
un dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia
se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de
memoria desde una memoria externa a una interna más rápida. Tal operación no
ocupa el procesador y como resultado puede ser planificado para efectuar otras
tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de
aplicaciones que requieran muchos recursos.
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos,
sí que se necesita el bus del sistema (tanto bus de datos como bus de direcciones),
por lo que existen diferentes estrategias para regular su uso, permitiendo así que
no quede totalmente acaparado por el controlador DMA.
Estrategias de transferencia por DMA
A continuación se exponen diferentes técnicas para realizar la transferencia de
datos. El uso de cada una de ellas dependerá de las características que se deseen
primar en un sistema.
DMA por robo de ciclo: se basa en usar uno o más ciclos de CPU por cada
instrucción que se ejecuta (de ahí el nombre). De esta forma se consigue
una alta disponibilidad del bus del sistema para la CPU, aunque, en
consecuencia, la transferencia de los datos será considerablemente lenta.
Este método es el que se usa habitualmente ya que la interferencia con la
CPU es muy baja.
DMA por ráfagas: consiste en enviar el bloque de datos solicitado medianteuna ráfaga, ocupando el bus del sistema hasta finalizar la transmisión. Así
se consigue la máxima velocidad, sin embargo la CPU no podrá usar el bus
durante todo ese tiempo, por lo que permanecería inactiva.
DMA transparente: se trata de usar el bus del sistema cuando se tiene
certeza de que la CPU no lo necesita, como por ejemplo en aquellas fases
del proceso de ejecución de las instrucciones donde nunca se usa ya que la
CPU realiza tareas internas (v. g. fase de decodificación de la instrucción).
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 35/64
De esta manera, como su nombre indica, la DMA permanecerá transparente
para la CPU y la transferencia se hará sin obstaculizar la relación CPU-bus
del sistema. Como desventaja, la velocidad de transferencia es la más baja
posible.
DMA Scatter-gather : permite la transferencia de datos a varias áreas de
memoria en una transacción DMA simple. Es equivalente al encadenamiento
de múltiples peticiones DMA simples. De nuevo, el objetivo es liberar a la
CPU de las tareas de copia de datos e interrupciones de entrada/salida
múltiples.
5.4. - EL CONTROLADOR DE INTERRUPCIONES 8259.
5.4.1. - COMO Y POR QUE DE LAS INTERRUPCIONES.
Los ordenadores se comunican con el exterior por medio de los dispositivos
de entrada y salida. Estos dispositivos son normalmente lentos en
comparación con la elevada velocidad de la unidad central. Un ejemplo
típico puede ser el teclado: entre las pulsaciones de cada tecla hay un
espacio de tiempo impredecible y dependiente del usuario. Una manerasimple de gestionar los dispositivos de E/S consiste en comprobar
continuamente si alguno de ellos tiene un dato disponible o lo está
solicitando. Sin embargo, esto supone una importante pérdida de tiempo
para el microprocesador, que mientras tanto podría estar haciendo otras
cosas. En una máquina multitarea y/o multiusuario, resulta más interesante
que los periféricos puedan interrumpir al microprocesador para solicitarle
una operación de entrada o salida en el momento necesario, estando laCPU liberada de la misión de comprobar cuándo llega ese momento.
Cuando se produce la interrupción, el microprocesador ejecuta la
correspondiente rutina de servicio y después continúa con su tarea normal.
Los compatibles PC poseen un hardware orientado por completo a la
multitarea (otra cosa es que el 8086 y el DOS no la aprovechen) y la
entrada/salida se gestiona casi por completo mediante interrupciones en
todas las máquinas. Por ejemplo, en las operaciones de disco, cuando
acaba la transferencia de datos se produce una interrupción de aviso y una
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 36/64
rutina de la BIOS activa una variable que lo indica, en el segmento de
memoria 40h. Las propias funciones de la BIOS para acceder al disco se
limitan a chequear continuamente esa variable hasta que cambie, lo que
significa un evidente desaprovechamiento de las posibilidades que la gestiónpor interrupciones pone a nuestra disposición.
Las interrupciones añaden cierta complejidad al diseño del hardware: en
principio, es necesario jerarquizarlas de alguna manera para decidir cuál se
atiende en el caso de que se produzcan dos simultáneamente. También es
importante el control de prioridad para el caso de que se produzca una
interrupción mientras se está procesando otra: sólo se la atenderá si es de
mayor prioridad. En este capítulo sólo consideraremos las interrupciones
hardware, no las de software ni las excepciones del procesador.
5.4.2. - DESCRIPCIÓN DEL INTEGRADO 8259.
Este circuito integrado está especialmente diseñado para controlar las
interrupciones en sistemas basados en el 8080/8085 y en el 8086. Puede
controlar hasta 8 interrupciones vectorizadas. Además, a un 8259 se lepueden conectar en cascada un máximo de 8 chips 8259 adicionales, lo que
permite gestionar sistemas con hasta 64 interrupciones, como veremos.
El significado e interpretación de las señales se
muestra a la derecha:
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 37/64
-CS: Habilita la comunicación con la CPU.-WR: Permite al 8259 aceptar comandos de la CPU.-RD: Permite al 8259 dejar la información en el bus de datos.
D7..D0: Bus de datos bidireccional, por el que se transmite la información de
control/estado y el número de vector de interrupción.
CAS0..CAS2:Líneas de cascada, actúan como salida en el 8259 maestro y comoentrada en los 8259 esclavos, en un sistema con varios 8259interconectados, constituyendo un bus local.
-SP/-EN:Pin de doble función: en el buffered mode del 8259 actuará como -EN, para habilitar los buffers del bus; en el modo normal indicará si el8259 es maestro o esclavo (-SP).
INT: Conectado a la patilla INT de la CPU para producir la interrupcióncuando llegue el momento.
IR0..IR7:
Líneas asíncronas de petición de interrupción. Una petición de
interrupción se ejecuta manteniendo IR en alto hasta que se recibe elreconocimiento (modo por flancos) o simplemente poniendo en altola línea IR (modo por niveles).
-INTA:Línea de reconocimiento de interrupción, por medio de esta línea sefuerza al 8259 a depositar en el bus la información del vector deinterrupción. INTA es independiente de -CS.
A0:En conjunción con -CS, -WR y -RD es empleada para enviar laspalabras de comando al 8259 y para solicitar información al mismo.Suele ir conectada a la línea A0 de la CPU.
DESCRIPCIÓN FUNCIONAL
El diagrama funcional del 8259, con la estructura interna de las diversas partesque lo componen, es el siguiente:
Los principales registros internos del 8259 son el IRR (Interrupt Request
Register) y el ISR (In Service Register). El IRR almacena todas las
peticiones de interrupción pendientes; el ISR almacena todas las
interrupciones que están siendo atendidas en un momento dado. La lógica
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 38/64
de gestión de prioridad determina qué interrupción, de las solicitadas en el
IRR, debe ser atendida primero: cuando lleguen las señales INTA dicha
interrupción será la primera procesada y su bit correspondiente se activará
en el ISR. El buffer del bus de datos conecta el 8259 con el bus de datosde la placa principal del ordenador: su diseño en 3 estados permite
desconectarlo cuando sea necesario; a través de este bus circulan las
palabras de control y la información de estado. La lógica de lectura y
escritura acepta los comandos que envía la CPU: aquí hay registros para
almacenar las palabras de inicialización y operación que envía el
procesador; también sirve para transferir el estado del 8259 hacia el bus de
datos. El buffer de cascada/comparador almacena y compara las
identificaciones de todos los 8259 que posea el sistema: el 8259 maestro
envía la identificación del 8259 esclavo en las líneas CAS, los 8259 esclavos
la leen y el implicado en la operación coloca en el bus de datos la dirección
(vector) de la rutina que atenderá la interrupción en los 2 próximos (o el
próximo) ciclos INTA.
FUNCIONAMIENTO DEL 8259 El funcionamiento del 8259 varía ligeramente en función del sistema en que
esté instalado, según sea este un 8086 o un 8080/8085. Veremos primero el
caso del 8086:
1)Una o más líneas IR son activadas por los periféricos, lo que pone a 1 el
correspondiente bit del IRR.
2)
El 8259 evalúa la prioridad de estas interrupciones y solicita la interrupción a la
CPU (línea INT) si es necesario.
3) Cuando la CPU reconoce la interrupción, envía la señal -INTA.
4)
Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit
correspondiente a la interrupción de mayor prioridad (la que va a ser procesada)
en el ISR y lo borra en el IRR. En este ciclo, el 8259 aún no controla el bus de
datos.
5) Cuando la CPU envía un segundo ciclo -INTA, el 8259 deposita en el bus de
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 39/64
datos un valor de 8 bits que indica el número de vector de interrupción del 8086,
para que la CPU lo pueda leer.
6)
En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada
más acabar el segundo pulso -INTA; en caso contrario, ese bit permanece activohasta que la CPU envíe el comando EOI al final de la rutina que trata la
interrupción (caso más normal).
En el caso de sistemas basados en el 8080/8085, el funcionamiento es idéntico
hasta el punto (3), pero a continuación sucede lo siguiente:
4)
Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit
correspondiente a la interrupción de mayor prioridad (la que va a ser procesada)
en el ISR y lo borra en el IRR. En este ciclo, el 8259 deposita en el bus de datos
el valor 11001101b, correspondiente al código de operación de la instrucción
CALL del 8080/85.
5) Esta instrucción CALL provoca que la CPU envíe dos pulsos -INTA.
6)
El 8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos,
sucesivamente, la parte baja y alta de la dirección de memoria del ordenador de
la rutina de servicio de la interrupción (16 bits).
7)
Esto completa la instrucción CALL de 3 bytes. En el modo AEOI del 8259, el bit
de la interrupción en el ISR es borrado nada más acabar el tercer pulso -INTA;
en caso contrario, ese bit permanece activo hasta que la CPU envíe el comando
EOI al final de la rutina que trata la interrupción.
Si en el paso (4), con ambos tipos de microprocesador, no está presente la petición
de interrupción (por ejemplo, porque ha sido excesivamente corta) el 8259 envía
una interrupción de nivel 7 (si hubiera un 8259 conectado en IR7, las líneas CAS
permanecerían inactivas y la dirección de la rutina de servicio de interrupción sería
suministrada por el 8259 maestro).
PROGRAMACIÓN DEL 8259
El 8259 acepta dos tipos de comandos generados por la CPU: los ICW
(Inicialization Command Word) que inicializan el 8259, y los OCW (Operation
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 40/64
Command Word) que permiten programar la modalidad de funcionamiento. Antes
de que los 8259 de un sistema comiencen a trabajar deben recibir una secuencia
de ICW que los inicialice. Los ICW y OCW constan de secuencias de 2 a 4
comandos consecutivos que el 8259 espera recibir secuencialmente, unos trasotros, a través del bus de datos, según sea necesario (el propio 8259 se encarga
de contarlos midiendo los pulsos de la línea -WR). Los OCW pueden ser enviados
en cualquier momento, una vez realizada la inicialización.
La comunicación con el 8259 emplea las líneas -WR y -RW, así como A0. El
hecho de que exista una sola línea de direcciones implica que el 8259 sólo ocupa
dos direcciones de puerto de E/S en el espacio de entrada y salida del ordenador.
ICWS (Inicialization Command Words).
ICW1: Cuando un comando es enviado con A0=0 y D4=1, el 8259 lo interpreta
como la primera palabra de la inicialización (ICW1) e inicia dicha secuencia de
inicialización, lo que implica lo siguiente:
- Se resetea el circuito sensible a los niveles, lo que quiere decir que hastanueva orden las líneas IR serán sensibles por flancos de transición bajo-alto.
- Se limpia el IMR.
- A la línea IR7 se le asigna un nivel de prioridad 7.
- Se desactiva el Special Mask Mode . Se queda listo para devolver IRR en la
próxima lectura OCW3.
- Si IC4 (bit D0) es 0, todas las funciones seleccionadas en ICW4 serán puestas
a 0 (non buffered mode , no AEOI, sistema 8080/85) e ICW4 no será necesaria.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 41/64
ICW2: Se envía con A0=1, para diferenciarlo de ICW0 (hacer OUT a lasiguiente dirección de puerto).
ICW3: Se envía sólo en el caso de que haya más de un 8259 en elsistema (bit SNGL de ICW1 a cero), en caso contrario en su lugar seenviaría ICW4 (si procede).
Formato de ICW3 a enviar a un 8259 maestro:
Formato de ICW3 a enviar a un 8259 esclavo para que memorice de quélínea IR del maestro cuelga:
ICW4: Se envía sólo si IC4=1 en ICW1, con objeto de colocar el 8259 enun modo de operación distinto del establecido por defecto (que equivale aponer a cero todos los bits de ICW4).
OCWS (Operation Command Words).
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 42/64
Una vez inicializado, el 8259 está listo para procesar las interrupciones quese produzcan. Sin embargo, durante su funcionamiento normal estácapacitado para recibir comandos de control por parte de la CPU.
OCW1:
Este comando activa y borra bits en el IMR (Interrupt Mask Register). Losbits M0..M7 de OCW1 se corresponden con sus correspondientes bits delIMR. Un bit a 1 significa interrupción enmascarada (inhibida) y a 0,interrupción habilitada.
OCW2:
OCW3:
TRABAJANDO CON EL 8259
En las ICW y, sobre todo, en las OCW, se han introducido un aluvión de
elementos nuevos que serán explicados a continuación.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 43/64
Fully Nested Mode.
Por defecto, el 8259 opera en esta modalidad (modo de anidamiento
completo), a menos que se le programe de otra manera. En este modo lasinterrupciones quedan ordenadas, por prioridades, de 0 (máxima) a 7
(mínima). Cuando se produce un reconocimiento de interrupción por parte
de la CPU, el 8259 evalúa cuál es la interrupción pendiente de mayor
prioridad, coloca su número de vector en el bus y activa su bit
correspondiente en el ISR. Este bit permanece activo hasta que el 8259
recibe el comando EOI (situación más normal); sin embargo, en el modo
AEOI, ese bit se bajaría inmediatamente después del último -INTA. Mientras
el bit del ISR esté activo, todas las interrupciones de igual o menor prioridad
que lleguen permanecen inhibidas; sin embargo, las de mayor prioridad
podrán interrumpir. En el caso del 8086, cuando comienza el tratamiento de
la interrupción, un bit del registro de estado de la CPU mantiene inhibidas
todas las interrupciones: lo normal es que el programa de control comience
con STI para permitir que el 8086 envíe nuevas señales INTA al 8259, así el
8259 podrá enviar las interrupciones de mayor prioridad que le lleguen. Tras
la secuencia de inicialización, las interrupciones quedan ordenadas demayor (IR0) a menor prioridad (IR7), aunque este orden puede modificarse
en la modalidad de prioridad rotatoria o con el comando de asignación de
prioridad. Nótese que cuando se utiliza el modo AEOI o el Special Mask
Mode no se respeta el modo Fully Nested Mode (debido a que una
interrupción de menor prioridad podría interrumpir a una rutina que gestiona
otra de mayor prioridad).
Special Fully Nested Mode.
Se emplea en sistemas que tienen varios 8259 conectados. Sólo el 8259
maestro es programado en este modo, lo que implica las siguientes
diferencias respecto al Fully Nested Mode normal:
- Cuando se atiende una interrupción de un 8259 esclavo, si viene otra de
mayor prioridad de ese mismo 8259 esclavo, se provoca una interrupción al
maestro (normalmente, el 8259 esclavo estaría enmascarado mientras se
procesa una de sus interrupciones).
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 44/64
- Cuando acaba la rutina de servicio de interrupción, hay que enviar un
EOI no-específico al 8259 esclavo; además hay que leer a continuación su
ISR y comprobar si es cero: en ese caso, hay que enviar además otro EOI al
8259 maestro (si no es cero significa que aún hay interrupciones en procesoen el 8259 esclavo).
Modos de EOI.
El EOI (End Of Interrupt) sirve para bajar el bit del ISR que representa la
interrupción que está siendo procesada. El EOI puede producirse
automáticamente (AEOI) al final de la última señal INTA que envía la CPU al
8259 para una interrupción dada (tercer ciclo INTA en el 8080/85 y segundo
en el 8086); sin embargo, la mayoría de los sistemas requieren una gestión
de prioridades en las interrupciones, lo que significa que es más conveniente
que EOI lo envíe el propio procesador al 8259, a través de OCW2, cuando
acabe la rutina de gestión de interrupción, para evitar que mientras se
gestiona esa interrupción se produzcan otras de igual o menor prioridad. En
un sistema con varios 8259, el EOI debe ser enviado no sólo al 8259
esclavo implicado sino también al maestro. Hay dos modalidades de EOI: la
específica y la no-específica. En el EOI no específico, el 8259 limpia el bitmás significativo que esté activo en el ISR, que se supone que es el
correspondiente a la última interrupción producida (la de mayor prioridad y
que está siendo procesada). Esto es suficiente para un sistema donde se
respeta el Fully Nested Mode . En el caso en que no fuera así, el 8259 es
incapaz de determinar cuál fue el último nivel de interrupción procesado, por
lo que la rutina que gestiona la interrupción debe enviar un EOI específico al
8259 indicándole qué bit hay que borrar en el ISR.
Rotación de prioridades.
Hay sistemas en que varios periféricos tienen el mismo nivel de prioridad, en
los que no interesa mantener un orden de prioridades en las líneas IR. En
condiciones normales, nada más atender una interrupción de un periférico,
podría venir otra que también se atendería, mientras los demás periféricos
se cruzarían de brazos. La solución consiste en asignar el menor nivel de
prioridad a la interrupción recién atendida para permitir que las demás
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 45/64
pendientes se procesen también. Para ello se envía un EOI que rote las
prioridades: si, por ejemplo, se había procesado una IR3, IR3 pasará al
menor nivel de prioridad e IR4 al mayor, quedando las prioridades
ordenadas (de mayor a menor): IR4, IR5, IR6, IR7, IR0, IR1, IR2, IR3. Existetambién una rotación específica de prioridades, a través de OCW2, que
puede realizarse en un comando EOI o independientemente del mismo
(comando para asignar prioridad).
Special Mask Mode.
Hay ocasiones en las que mientras se ejecuta una rutina de servicio de
interrupción es necesario permitir que se produzcan ciertas interrupciones
de menor prioridad en algunos momentos, o prohibirlo en otros, sin ser quizá
interesante enviar el EOI antes de tiempo. Esto implica alterar la estructura
normal de prioridades. La manera de realizar esto es activando el Special
Mask Mode a través de OCW3 durante la rutina de servicio de interrupción
(es más que conveniente inhibirlo de nuevo al final). Una vez activado este
modo, el IMR indica qué interrupciones están permitidas (bit a 0) y cuáles
inhibidas (bit a 1). Por ello, suele ser conveniente activar el bit del IMR
correspondiente a la IR en servicio (para evitar que se produzca de nuevocuando aún no ha sido procesada). Al final hay que enviar un EOI
específico, ya que este modo de trabajo altera el Fully Nested Mode
habitual.
Comando POLL.
En esta modalidad poco habitual, habilitada a través de OCW3, no se
emplea la salida INT del 8259 o bien el microprocesador trabaja con lasinterrupciones inhibidas. El servicio a los periféricos es realizado por
software utilizando el comando POLL. Una vez enviado el comando POLL,
el 8259 interpreta la próxima lectura que se realice como un reconocimiento
de interrupción, actualizando el ISR y consultando el nivel de prioridad.
Durante esa lectura, la CPU obtiene en el bus de datos la palabra POLL que
indica (en el bit 7) si hay alguna interrupción pendiente y, en ese caso, cuál
es la de mayor prioridad (bits 0-2).
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 46/64
Lectura de información del 8259.
El IMR puede ser leído a través de OCW0; para leer el contenido del IRR y
el ISR hay que emplear OCW3. Para estos dos últimos registros hay que
enviar una OCW3 que elija el IRR o el ISR; a continuación se puede leer elbus de datos (A0=0) sin necesidad de enviar más OCW3 (el 8259 es capaz
de recordar si tiene que leer el IRR o el ISR). Esto último no es así,
evidentemente, en el caso de utilizar el comando POLL (tras enviarlo, la
próxima lectura se interpreta como un INTA). Tras inicializarse, el 8259
queda preparado por defecto para devolver IRR a la primera lectura.
Buffered Mode.
Al emplear el 8259 en grandes sistemas, donde se requieren buffers en los
buses de datos, si se va a emplear el modo cascada existe el problema de la
habilitación de los buffers. Cuando se programa el modo buffer, la patilla -
SP/-EN del 8259 actúa automáticamente como señal de habilitación del los
buffers cada vez que se deposita algo en el bus de datos. Si se programa de
esta manera el 8259 (bit BUF de ICW4) será preciso distinguir por software
si se trata de un 8259 maestro o esclavo (bit M/S de ICW4).
5.4.3. - EL 8259 DENTRO DEL ORDENADOR.
Los PC/XT vienen equipados con un 8259 conectado a la dirección base E/S
20h; este controlador de interrupciones es accedido, por tanto, por los
puertos 20h (A0=0) y 21h (A0=1). En los AT y máquinas superiores,
adicionalmente, existe un segundo 8259 conectado en cascada a la línea
IR2 del primero. Este segundo controlador es accedido a través de lospuertos 0A0h y 0A1h. La BIOS del ordenador, al arrancar la máquina, coloca
la base de interrupciones del primer controlador en 8, lo que significa que las
respectivas IR0..IR7 están ligadas a los vectores de interrupción 8..15; el
segundo 8259 de los AT genera las interrupciones comprendidas entre 70h
y 77h. La asignación de líneas IR para los diversos periféricos del ordenador
es la siguiente (por orden de prioridad):
IRQ 0 Temporizador (INT 08h)
IRQ 1 Teclado (INT 09h)
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 47/64
IRQ 2 En los PC/XT: canal E/S (INT 0Ah)
IRQ 8 Reloj de tiempo real (INT 70h)
-+
IRQ 9 Simulación de IRQ2 (INT 71h)
|
IRQ 10 Reservado (INT 72h)|
IRQ 11 Reservado (INT 73h)
|
IRQ 12 Reservado (INT 74h)
|> Sólo AT y PS/2
IRQ 13 Coprocesador aritmético (INT 75h)
|
IRQ 14 Controlador de disco duro (INT 76h)
|
IRQ 15 Reservado (INT 77h)
-+
IRQ 3 COM2 (INT 0Bh)
IRQ 4 COM1 (INT 0Ch)
IRQ 5 Disco duro PC/XT (LPT2 en el AT) (INT 0Dh)
IRQ 6 Controlador de disquetes (INT 0Eh)
IRQ 7 LPT1 (INT 0Fh)
En los AT, la línea IR2 del 8259 maestro es empleada para colgar de ella el
segundo 8259 esclavo. Como la línea IR2 está en el slot de expansión de 8
bits, por razones de compatibilidad los AT tienen conectado en su lugar la
IR9 que simula la IR2 original. Cuando se produce una IR9 debido a un
periférico de XT que pretendía generar una IR2, el AT ejecuta una rutina de
servicio en INT 71h que salta simplemente a la INT 0Ah (tras enviar un EOI
al 8259 esclavo).
La colocación de IRQ0-IRQ7 en el rango INT 8-INT 15 fue bastante torpe
por parte de IBM, al saltarse la especificación de Intel que reserva las
primeras 32 interrupciones para el procesador. En modo protegido, algunas
de esas excepciones es estrictamente necesario controlarlas. Por ello, los
sistemas operativos que trabajan en modo extendido y ciertos extensoresdel DOS (como las versiones 3.x de WINDOWS) se ven obligados a mover
de sitio estas interrupciones. En concreto, WINDOWS 3.x las coloca en INT
50h-INT 57h (por software, las máquinas virtuales 8086 emulan las
correspondientes INT 8-INT 15). Además, en el modo protegido del 286/386
(o el virtual-86 del 386) la tradicional tabla de vectores de interrupción es
sustituida por otra de descriptores, aunque el funcionamiento global es
similar.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 48/64
La interrupción no enmascarable del 80x86 no está controlada por el
8259: es generada por la circuitería que controla la memoria si se detecta un
error de paridad. La interrupción no enmascarable puede ser enmascaradaen los ordenadores compatibles gracias a la circuitería de apoyo al
procesador, aunque no es frecuente; en los AT el bit 7 del puerto 70h
controla su habilitación (si es cero, la NMI está habilitada) sin embargo
también se podría inhibir el control de paridad directamente (activando los
bits 2 y 3 de la dirección E/S 61h, respetando el resto de los bits de ese
puerto por medio de una lectura previa). En los PC/XT, es el puerto 0A0h el
que controla la habilitación de la NMI, también con el bit 7 (con la diferencia
de que debe estar a cero para inhibirla).
Durante la inicialización del ordenador, la BIOS envía sucesivamente al
8259 las palabras ICW1 a ICW4 de la siguiente manera (listado extraído
directamente de la BIOS):
; Inicialización del 8259 maestro
(XT/AT)
MOV AL,10001b ; funcionamiento por flancos,
cascada, ICW4 necesaria OUT 20h,AL ; enviar ICW1
JMP SHORT $+2 ; estado de espera para E/S
MOV AL,8 ; base de interrupciones en INT 8
OUT 21h,AL ; enviar ICW2
JMP SHORT $+2
MOV AL,4 ; hay un esclavo en IR2 (S2=1)
¡poner 0 en PC/XT!
OUT 21h,AL ; enviar ICW3
JMP SHORT $+2
MOV AL,1 ; modo 8086, EOI normal, not buffered
mode
OUT 21h,AL ; enviar ICW4: completada lainicialización del 8259-1
JMP SHORT $+2
MOV AL,255
OUT 21h,AL ; enmascarar todas las interrupciones
JMP SHORT $+2 ; Inicialización del 8259 esclavo
(sólo AT)
MOV AL,10001b ; funcionamiento por flancos,
cascada, ICW4 necesaria
OUT 0A0h,AL ; enviar ICW1
JMP SHORT $+2
MOV AL,70h ; base de interrupciones en INT 70h
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 49/64
OUT 0A1h,AL ; enviar ICW2
JMP SHORT $+2
MOV AL,2 ; es el esclavo conectado a IR2
OUT 0A1h,AL ; enviar ICW3
JMP SHORT $+2
MOV AL,1 ; modo 8086, EOI normal, not bufferedmode
OUT 0A1h,AL ; enviar ICW4: completada la
inicialización del 8259-2
JMP SHORT $+2
MOV AL,255
OUT 0A1h,AL ; enmascarar todas las interrupciones
Como se puede observar, la rutina de arriba enmascara todas las
interrupciones a través del IMR. El objetivo de esta medida es evitar que se
produzcan interrupciones antes de desviar los correspondientes vectores,
pudiendo incluso mientras tanto estar habilitadas las interrupciones con STI.
Cuando se produce una interrupción de la CPU (bien por software o por
hardware), el indicador de interrupciones del registro de estado del 8086 se
activa para inhibir otra posible interrupción mientras se procesa esa (la
instrucción IRET recuperará los flags del programa principal devolviendo las
interrupciones a su estado previo). Lo normal suele ser que las rutinas que
gestionan una interrupción comiencen por un STI con objeto de permitir lageneración de otras interrupciones; las interrupciones sólo deben estar
inhibidas en brevísimos momentos críticos. Sin embargo, cuando se procesa
una interrupción hardware, el registro de interrupciones activas (ISR) indica
qué interrupción en concreto está siendo procesada; si en ese momento
llega otra interrupción hardware de menor o igual prioridad le será denegada
la petición, si es de mayor prioridad le será concedida (si la rutina
comenzaba por STI). Cuando acaba de procesarse la interrupción hardware,
la instrucción IRET no le dice nada al 8259, por lo que el programador debe
preocuparse de borrar el ISR antes de acabar. Si, por ejemplo, se gestiona
la interrupción del temporizador sin limpiar al final el ISR, a partir de ese
momento quedarán bloqueados el teclado, los discos ... Conviene aquí
señalar que una rutina puede apoyarse en una interrupción hardware sin
necesidad de reprogramarla por completo. Ejemplo:
STI
PUSH AX
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 50/64
IN AL,puerto_teclado
CALL anterior_int9
;
; procesar tecla
;
POP AX IRET
Al producirse la INT 9 se lee el código de rastreo de la tecla y luego se llama
a la rutina que gestionaba con anterioridad a ésta la INT 9: ella se encargará
de limpiar el ISR que, por tanto, no es tarea de nuestra rutina. Si hubiera que
limpiar el ISR, bastaría con un EOI no específico (OCW2: enviar un valor
20h al puerto 20h para el 8259-1 y al puerto 0A0h para el 8259-2; en las
IRQ8-IRQ15 hay que enviar el EOI a ambos controladores de interrupción).
5.4.4. - EJEMPLO: CAMBIO DE LA BASE DE LAS INTERRUPCIONES.
La siguiente utilidad reprograma el 8259 maestro para desviar las INT 8-INT
15 a los nuevos vectores INT 50h-INT 57h (que invocan a los originales,
para que el sistema siga funcionando con normalidad). Esta nueva ubicación
no ha sido elegida por capricho, y es la misma que emplea WINDOWS 3.x.
La razón es que el 386 trabaja normalmente en modo virtual-86 bajo MS-
DOS 5.0; cuando se produce una interrupción se ejecuta una rutina en modo
protegido. El EMM386 del MS-DOS 5.0 no está preparado para soportar las
IRQ0-IRQ7 en otra localización que no sea la tradicional INT 8-INT 15 ó en
su defecto INT 50h-INT 57h (por compatibilidad con WINDOWS). Con el
QEMM386 o, simplemente, sin controlador de memoria expandida instalado,
no habría problemas y se podría elegir otro lugar distinto. Por cierto: si se
entra y se sale de WINDOWS, la nueva localización establecida, ya sea en
50h o en otro sitio, deja de estar vigente: esto significa que WINDOWS
reprograma la interrupción base al volver al DOS. Personalmente hecomprobado que aunque IRQDEMO fuera más elegante (empleando
funciones de la especificación VCPI), nuestro querido WINDOWS no lo
sería: ¡para qué molestarse!. Sin embargo, IRQDEMO sí se toma la molestia
de comprobar si la máquina es un XT o un AT para enviar correctamente la
ICW3 del 8259.
;
********************************************************************
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 51/64
; * IRQDEMO.ASM - Utilidad residente de demostración, que desvía
*
; * las interrupciones hardware INT 8-INT 15 hacia
*
; * los vectores INT 50h a INT 57h.
*
;
********************************************************************
irqdemo SEGMENT
ASSUME CS:irqdemo, DS:irqdemo
ORG 100h
inicio:
JMP main
; ------------ Area residente
irq0: INT 8 ; simular IRQ's normales (se
IRET ; podría aprovechar también
irq1: INT 9 ; para hacer algo más útil).
IRET
irq2: INT 10
IRET
irq3: INT 11
IRET
irq4: INT 12
IRET
irq5: INT 13
IRET irq6: INT 14
IRET
irq7: INT 15
IRET
tam_resid EQU ($-OFFSET inicio+256+15)/16
; ------------ Código de instalación
main PROC
LEA BX,tabla_ints
MOV AL,50h ; nueva base para IRQ's 0-7
otra_int: PUSH AX
PUSH BX
MOV AH,25h
MOV DX,[BX]
INT 21h ; desviar INT 50h-57h
POP BX
ADD BX,2
POP AX
INC AL
CMP AL,58h
JB otra_int CALL es_AT?
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 52/64
MOV BL,4
MUL BL
MOV BL,AL ; BL = 4 en AT y 0 en PC/XT
CALL inic_8259
LEA DX,texto_txt
MOV AH,9 INT 21h ; mensaje de instalación
MOV ES,ES:[2Ch]
MOV AH,49h
INT 21h ; liberar entorno
MOV AH,31h
MOV DX,tam_resid
INT 21h ; terminar residente
main ENDP
; ------------ Subrutinas de apoyo a la instalación.
inic_8259 PROC ; Inicialización 8259 maestro
MOV AL,0FFh
OUT 21h,AL ; enmascarar todas las IRQ
JMP SHORT $+2
MOV AL,10001b ; flancos, maestro, sí ICW4
OUT 20h,AL ; enviar ICW1
JMP SHORT $+2 ; estado de espera E/S
MOV AL,50h ; base interrupciones INT 50h
OUT 21h,AL ; enviar ICW2
JMP SHORT $+2
MOV AL,BL ; 4 en AT y 0 en PC/XT
OUT 21h,AL ; enviar ICW3
JMP SHORT $+2
MOV AL,1 ; modo 8086, EOI normal
OUT 21h,AL ; enviar ICW4
JMP SHORT $+2
MOV AL,0
OUT 21h,AL ; permitir todas las IRQ
RET
inic_8259 ENDP
es_AT? PROC ; comprobar si es XT ó AT
PUSHF
POP AX AND AX,0FFFh
PUSH AX
POPF
PUSHF
POP AX
AND AX,0F000h
CMP AX,0F000h
MOV AX,1 ; indicar AT
JNE es_AT
DEC AX ; indicar PC/XT
es_AT: RET
es_AT? ENDP
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 53/64
tabla_ints DW irq0, irq1, irq2, irq3, irq4, irq5, irq6, irq7
texto_txt DB 13,10,"Las interrupciones 8-15 son ahora 50-
57h."
DB 13,10,"$"
irqdemo ENDS
END inicio
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 54/64
UNIDAD6
ASSEMBLY PARAPROCESADORES X86
Objetivo.- Escribir programas a bajo nivel (ensamblador), para controlar el
hardware del PC.
ORIENTACIÓN METODOLÓGICA PARA EL APRENDIZAJE
Lea los capítulos 32 y 33 del texto básico
CODIFICACION DE LAS INSTRUCCIONES EN EL 8086.
(Este apartado es muy técnico. Aunque no es imprescindible comprender lo que se
expone a continuación para programar en ensamblador, es muy útil conocer cómo
el procesador interpreta lo que le 'pedimos'.
Esto nos da un mayor conocimiento acerca de la máquina en cuestión.
Y de esta forma entendemos el porqué de ciertas sintaxis de instrucciones. Y
resolveremos más fácilmente los errores una vez que se nos presenten).
Cada procesador tiene un conjunto de instrucciones para manejarlo, así como para
manejar la máquina por medio de él.
Indistintamente del lenguaje de programación que estemos utilizando, cuando
obtenemos el ejecutable, éste está compuesto únicamente por ese tipo de
instrucciones básicas (instrucciones de código máquina).
Dependiendo de la calidad y prestaciones de ese lenguaje de programación, el
código resultante, necesitará más instrucciones del procesador o menos.
De todos es conocido, que hay lenguajes de alto o medio nivel (como C, pascal,
basic, etc.) en los que para una misma tarea, uno dará un ejecutable más grande
que otro. Velocidad, aparte.
Esto no sucede así con ensamblador, en el que para cada instrucción, existe una y
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 55/64
sólo una instrucción en código máquina.
Las instrucciones del 8086 se codifican sobre 4 campos como máximo, y tienen un
tamaño de 1 a 6 bytes. Es decir, dependiendo de la instrucción de que se trate,necesitará más o menos bytes para su codificación, así como más o menos
campos.
Los cuatro campos en una instrucción código máquina son:
1.- Código de operación: Este campo siempre aparece (obviamente).
Una vez que el procesador descifra el significado de este campo,
sabe si la instrucción consta de más campos o si se trata de
una instrucción de un sólo campo.
2.- Modo de direccionamiento (byte EA): Le indica al procesador el
número de operandos que acompañan al código de operación, así
como el tipo de estos operandos(registros, memoria, valor inmediato).
3.- Desplazamiento del dato (sobre 8 o 16 bits): En caso de existir
este campo, supone un desplazamiento sobre la dirección dada por
un registro índice o base (especificado este registro mediante el
byte EA).4.- Valor inmediato (sobre 8 o 16 bits): Almacena un valor numérico
de 8 o 16 bits, que va a ser utilizado para una transferencia, una
operación aritmética, etc.
Ahora entramos un poco más en detalle:
Primero veremos un esquema de una instrucción código máquina:
+-------------------------------------------------------------------+
¦ 8 bits 2 3 3 8 ó 16 bits 8 ó 16 bits ¦
¦ +-----------+ +---Ð---Ð---+ +--------------+ +--------------+ ¦
¦ ¦ código de ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Valor ¦ ¦
¦ ¦ operación ¦ ¦MOD¦REG¦R/M¦ ¦Desplazamiento¦ ¦ Inmediato ¦ ¦
¦ +-----------+ +---¤---¤---+ +--------------+ +--------------+ ¦
¦ -- 1 byte - -- 1 byte - 1 ó 2 bytes - 1 ó 2 bytes - ¦
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 56/64
+-------------------------------------------------------------------+
- El código de operación está codificado sobre 8 bits.
Por medio de este campo se sabe si va a ser necesario cualquier otrode los tres restantes. También el código de operación contiene
información acerca de si se va a trabajar con palabras o con bytes.
- Byte EA ó Modo de direccionamiento: Contiene 3 campos. Los campos MOD y
R/M especifican el modo de direccionamiento, y el campo REG especifica
el registro de que se trata en la instrucción.
El campo MOD que es de 2 bits puede tener 4 valores diferentes: Los
3 primeros seleccionan el desplazamiento en los modos de direccionamiento
de memoria. El cuarto selecciona un registro. Detallemos la función
de estos bits en cada una de las 4 posibilidades:
00 ---> No hay desplazamiento.
01 ---> Se usa un byte para codificar el desplazamiento.
10 ---> Se usan 2 bytes (una palabra) para codificar el desplazamiento.11 ---> Hace que R/M seleccione un registro usando la misma codificación
de los registros que para REG (ver más abajo), en lugar de un
modo de direccionamiento de la memoria.
Es decir, que se produce una transferencia de un registro a otro.
El campo REG que es de 3 bits codifica el registro empleado. Por tanto
es posible especificar hasta 8 registros diferentes por medio de estecampo. Dependiendo de que se trate de acceso a palabras o a octetos, se
seleccionará un registro de entre un grupo de 8, o de un segundo grupo de
8 registros.
Para cuando se accede a registros de 16 bits, el campo REG codifica los
registros de palabra de la siguiente manera:
AX (000), CX (001), DX (010), BX (011)
SP (100), BP (101), SI (110), DI (111)
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 57/64
Cuando se accede a registros de 8 bits, la codificación de los registros
de tamaño byte queda como sigue:
AL (000), CL (001), DL (010), BL (011)
AH (100), CH (101), DH (110), BH (111)
El campo R/M indica el segundo registro (si lo hay) o el tipo de
direccionamiento a memoria.
En caso de que haya segundo registro, éste se codifica de la misma forma
que para el campo REG.
En caso de que se trate de un modo de direccionamiento de memoria,
estos tres bits seleccionan uno de los modos de direccionamiento posibles
de acuerdo con la siguiente tabla:
000 desplazamiento final = [BX] + [SI] + desplazamiento
001 desplazamiento final = [BX] + [DI] + desplazamiento010 desplazamiento final = [BP] + [SI] + desplazamiento
011 desplazamiento final = [BP] + [DI] + desplazamiento
100 desplazamiento final = [SI] + desplazamiento
101 desplazamiento final = [DI] + desplazamiento
110 desplazamiento final = [BP] + desplazamiento
111 desplazamiento final = [BX] + desplazamiento
- El desplazamiento en caso de existir, supone un incremento en la dirección
dada por un registro índice o base, dando lugar así a un desplazamiento
final, dentro de un segmento dado. Es decir, como se ve en la tabla
superior, podemos acceder a memoria a través de un registro base (BX) o
un registro índice (SI, DI), etc, o bien hacerlo a través de uno de esos
registros, pero ayudándonos de un desplazamiento que se suma a la
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 58/64
dirección que tienen establecida esos registros.
Veremos más adelante la utilidad de utilizar desplazamientos sobre un
registro base o índice.
Como ejemplo: Tenemos el registro DI apuntando a (con valor igual a) la
dirección 3000h (direcciones siempre en hexadecimal).
En esa dirección tenemos el comienzo de una cadena de caracteres que
queremos convertir a mayúsculas. Y una vez que los hemos convertido, los
queremos copiar a la memoria de pantalla.
Pues bien, podemos ir incrementando DI para tratar cada uno de estos
caracteres, o bien podemos utilizar DI junto con un desplazamiento para
acceder a cada uno de los caracteres. Es decir, para acceder al primer
elemento sería DI+0, para el segundo, sería DI+1, etc. De esta forma, al
terminar la tarea, DI seguirá apuntando al principio de la cadena,
y podremos copiar la cadena desde el principio a donde corresponda.
Si no utilizáramos desplazamiento, tendríamos que tener una variable
apuntando al inicio de la cadena, para tenerlo luego localizable.Bueno... Esto es un simple ejemplo. Las posibilidades que nos ofrece
el utilizar desplazamientos acompañando al registro base o índice son
mucho más interesantes que lo que acabamos de ver en el ejemplo.
- El valor inmediato se utiliza cuando hacemos movimientos de datos a
registros o a memoria. Por ejemplo queremos introducir en el registro
AX la cantidad 37867 (93EBH), pues ese 37867 sería el valor inmediato.
En ensamblador la instrucción sería:
MOV AX,37867
Simple, ¿no? Mover (MOV) la cantidad 37867 al registro AX.
Próximamente se verá el resto de instrucciones en ensamblador,
mientras tanto, y por ser necesario ahora, aprenderemos el uso de la
instrucción MOV.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 59/64
La instrucción como hemos podido ver, se utiliza para movimientos o
transferencias de datos: de registro a registro, de registro a memoria,
y de memoria a registro. Pero nunca de memoria a memoria, ya que la
arquitectura del procesador y bus no lo permiten.
La sintaxis básica de la instrucción es la siguiente:
MOV destino,fuente.
El destino siempre a la izquierda, y la fuente a la derecha.
Ejemplos:
* MOV ax,5 ---> mueve el valor inmediato (o dato) 5 al registro AX.
Examinemos esta instrucción. Alguien podría pensar que como el valor 5
cabe en un sólo registro de 8 bits (AL en este caso), el registro AH
quedaría como estaba antes de la instrucción. Pues no es así.
Si le decimos al procesador que introduzca un 5 en AX, así se hará.
Poniendo a cero el registro AH, para que AX tenga el valor 5.
Veamos cómo se codifica esta instrucción:
MOV AX,5 ---> B8 05 00 (Código máquina, siempre en hexadecimal).En primer lugar tenemos el primer byte que contiene el código de
operación (B8).
Debido a que este código de operación(B8) tiene implícita la utilización
del registro AX como destino, no es necesario el byte EA ó byte de
direccionamiento, que sí sería necesario para transferencias con otros
registros. Como vimos en la primera lección al hablar de registros,
el registros AX (AH, AL) se utiliza normalmente como acumulador, detal manera que existen operaciones especiales para trabajar con él, como
la instrucción B8 y otras muchas de movimiento de datos, en las que
no se especifica el registro mediante el byte EA, ya que está implícito
en el código de operación. De esta manera se gana velocidad en la
ejecución del programa utilizando los registros para lo que han sido
creados. AX acumulador, CX contador, etc.
Después del código de operación tenemos dos bytes (1 palabra).
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 60/64
Estos dos bytes forman el campo Valor Inmediato, que como vemos
aquí es de 16 bits.
De los 4 campos que puede tener una instrucción código máquina, ésta sólo
tiene dos:El primero (código de operación), y el último (valor inmediato).
Y volviendo de nuevo al campo Valor inmediato y a su tamaño en esta
instrucción (2 bytes):
El orden de estos bytes es muy significativo. Veamos...
Tenemos el valor 5 para introducir en una palabra. Lo normal sería
que en el código se almacenara este cinco como (00 05), pues en el
8086 esto no es así. Como siempre, para acelerar el programa cuando
se manejan transferencias de datos, se llegó a la conclusión de que
si se almacenan los bytes que componen una palabra en orden inverso
al normal, luego es mucho más rápido recuperarlos. Y es así como se
hace en la práctica. Cada vez que almacenamos una palabra en memoria,
el byte de mayor peso queda a la derecha del byte de menor peso.
De lo anterior se desprende que el número 5 al introducirlo en una
palabra de memoria, quedaría como (05 00).
Otro ejemplo: Una vez que almacenamos el número 8BC3H en memoria,
si hacemos un volcado de memoria para ver qué tenemos, veremos que
en memoria no está el número como 8BC3H, sino que nos encontramos con
C38BH.
* MOV al,5 ---> Introduce el valor 5 en el registro AL.En este caso, sí que AH queda como estaba antes de la instrucción, ya
que en la misma no interviene tal registro de ninguna forma (ni
implícita al referirse a AX, ni explícita al referirnos a él en
concreto).
La instrucción se codifica como:
MOV AL,5 ---> B0 05
Este ejemplo es prácticamente como el anterior, excepto que el código
de operación en vez de ser B8 es B0, y además ya no hay 2 bytes en
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 61/64
el campo valor inmediato, sino que hay uno sólo, ya que vamos a
introducir el dato en un registro de tamaño byte.
Ejemplo cuando se trata de transferencias entre registros:* MOV CX,SI ---> Introduce el valor del registro SI en el registro CX.
La instrucción se codifica como:
MOV CX,SI ---> 8B CE
En esta instrucción tenemos un código de operando y el byte EA.
Mediante este byte EA el procesador sabe qué registros intervienen
en la transferencia.
Descomponiendo el byte EA en sus dígitos binarios, tenemos:
CE ---> 11001110
El campo MOD con valor 11, hace que R/M seleccione un registro como
fuente.
El campo REG con valor 001, indica que el registro destino es CX.
El campo R/M con valor 110, indica que el registro fuente es SI.
Hemos visto la manera de introducir un dato en un registro. ¿Pero cómo
hacemos para introducir un dato en memoria?Bien, para esto se utilizan las variables (que también existen en
ensamblador) o bien, se indica una posición de memoria concreta, pasando
de variables.
Hay una tercera manera que es utilizar registros índice o base.
+ En el primer caso, es muy simple. Si queremos introducir el valor 70h
en la variable X, basta con escribir MOV X,70h.Previamente la variable X la hemos definido y hemos definido también
su tamaño: byte, palabra, doble palabra.
Una vez que el compilador dé el código ejecutable, lo que antes era
la variable X, ahora será la posición de memoria ocupada por la variable.
Es decir, que el usar variables es para darnos una gran comodidad a los
programadores. Podríamos hacer un programa sin usar variables, indicando
posiciones de memoria directamente, pero eso es ya más parecido a código
máquina puro que a ensamblador.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 62/64
+ En el segundo caso, el de indicar la posición de memoria concreta, hay
que tener en cuenta si esa posición de memoria la utilizamos como un
byte o como una palabra.Esto es así ya que si por medio del programa queremos guardar un 5 en
la posición de memoria 7654h (por ejemplo), el procesador no sabe si
queremos guardar un byte o una palabra.
¦ Para que no surja ningún tipo de lios, el lenguaje ensamblador cuenta
¦ con ciertos convencionalismos para tratar estas transferencias a memoria.
¦ Cuando queremos introducir un byte en una posición dada de memoria lo
¦ hacemos con el siguiente formato: MOV BYTE PTR DS:[7654H],5
¦ ^^^^^^^^ ^^ ^ ^
¦ BYTE PTR indica que vamos a acceder a una posición de memoria de tipo
BYTE.
¦
¦ Caundo queremos introducir una palabra a partir de una posición de memoria
¦ el formato queda como sigue: MOV WORD PTR DS:[7654H],5
¦ ^^^^^^^^ ^^ ^ ^¦ WORD PTR indica que vamos a acceder a una posición de memoria de tipo
WORD.
Tened en cuenta también que cuando se quiere acceder a una posición
concreta de memoria sin pasar por una variable, se debe indicar entre
corchetes, como en los ejemplos de arriba.
Pero eso no es todo, se debe indicar un segmento, para que el procesadorsepa a qué zona de 64 ks de la memoria pertenece la posición dada
entre los corchetes.
En este caso indicamos el segmento DS (segmento de datos), que es lo
usual. Aunque también podríamos haber seleccionado el segmento
ES(segmento
extra de datos) para así poder transferir algo fuera de nuestra zona
de datos.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 63/64
Obsérvese la manera de indicar una dirección en dirección segmentada,
no real. Primero se indica el segmento, luego dos puntos para separar,
y luego entre corchetes el offset o desplazamiento dentro de ese segmento.
Segmento:[desplazamiento]DS:[2626h], ES:[FFFFh], etc.
+ En el tercer caso nos valemos de un registro índice o base, el cual
contiene la dirección de la posición de memoria que nos interesa, para
acceder a dicha posición de memoria.
Un ejemplo: MOV BYTE PTR [DI],5
Obsérvese que aquí no es necesario indicar el segmento al que nos
referimos. Se coge por defecto el segmento DS.
En definitiva, cuando accedemos a memoria a través de registros indice
o base, no es necesario indicar el segmento. Mientras que si lo hacemos
en forma directa, indicando la posición de memoria tal que [2635h],
debemos indicar el segmento con el que vamos a tratar.
Veamos ahora cómo se codifica una instrucción en la que se hace acceso
a memoria.
* MOV WORD PTR DS:[7654H],5 ---> Esta instrucción introduce el valor 5
a partir de la posición de memoria 7654h. Y digo a partir, ya que
necesita dos posiciones de memoria para almacenarlo, ya que se
trata de un valor inmediato de 16 bits (esto se determina al ponerlo del WORD PTR).
Con lo cual, la palabra con valor 5, queda almacenada en dos posiciones
de memoria, la indicada [7654h] y la contigua [7655h].
Si tenemos en cuenta lo que hemos comentado antes acerca de cómo el
8086 almacena las datos de tipo palabra en memoria, sabremos de antemano
que la posición [7654h] contendrá el valor 05, y la posición [7655h]
contendrá el valor 00.
5/11/2018 Gu a de Microprocesadores 30-36 - slidepdf.com
http://slidepdf.com/reader/full/guia-de-microprocesadores-30-36 64/64
Veamos cómo se codifica esta instrucción:
MOV WORD PTR [7654H],5 ---> C7 06 54 76 05 00
Vemos que esta instrucción ha ocupado el máximo posible (6 bytes).De tal forma que los 4 campos de instrucción están presentes.
Vamos a estudiarla detenidamente:
Lo primero que tenemos es el código de operación: C7.
Este código indica una operación MOV sobre una dirección concreta ó
desplazamiento, y con un valor numérico de tipo palabra.
El 3º y 4º byte juntos forman el desplazamiento (tener en cuenta
lo del tema del orden inverso en los bytes), y los bytes 5º y 6º
juntos forman el valor inmediato a introducir (tener en cuenta de nuevo
lo del orden inverso).
Y nos queda el 2º byte, que es el byte EA o de direccionamiento.
¿Que por qué lo he dejado para el final?
je. Porque llevo 2 o 3 horas intentando descubrir el por qué de que sea
06. No me cuadra por ningún sitio, ya que este 6 indica que no haydesplazamiento, cuando sí lo hay.