64
  UNIVERSIDAD TECNOLÓGICA AMÉRICA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Y EL ECTRÓN ICA EDUCACIÓN A DISTANCIA GUÍA DE ESTUDIO DATOS INFORMATIVOS Carrera: Electrónica Asignatura: Microprocesadores Nivel: Octavo  Au tor d e la Gu ía: Ing. Flavio Corella Guerra E-MAIL: [email protected]  Fecha Edición: Marzo 2009

Guía de Microprocesadores 30-36

Embed Size (px)

Citation preview

Page 1: Guía de Microprocesadores 30-36

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: [email protected] 

Fecha Edición: Marzo 2009

Page 2: Guía de Microprocesadores 30-36

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

Page 3: Guía de Microprocesadores 30-36

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.

Page 4: Guía de Microprocesadores 30-36

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

Page 5: Guía de Microprocesadores 30-36

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  

Page 6: Guía de Microprocesadores 30-36

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

Page 7: Guía de Microprocesadores 30-36

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

Page 8: Guía de Microprocesadores 30-36

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

Page 9: Guía de Microprocesadores 30-36

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

Page 10: Guía de Microprocesadores 30-36

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.

Page 11: Guía de Microprocesadores 30-36

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.

Page 12: Guía de Microprocesadores 30-36

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.

Page 13: Guía de Microprocesadores 30-36

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é.

Page 14: Guía de Microprocesadores 30-36

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.

Page 15: Guía de Microprocesadores 30-36

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:

Page 16: Guía de Microprocesadores 30-36

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

Page 17: Guía de Microprocesadores 30-36

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

Page 18: Guía de Microprocesadores 30-36

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.

Page 19: Guía de Microprocesadores 30-36

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.

Page 20: Guía de Microprocesadores 30-36

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¿

Page 21: Guía de Microprocesadores 30-36

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

Page 22: Guía de Microprocesadores 30-36

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.

Page 23: Guía de Microprocesadores 30-36

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.

Page 24: Guía de Microprocesadores 30-36

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.

Page 25: Guía de Microprocesadores 30-36

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

Page 26: Guía de Microprocesadores 30-36

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

Page 27: Guía de Microprocesadores 30-36

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 <-- 

+------+

Page 28: Guía de Microprocesadores 30-36

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.

Page 29: Guía de Microprocesadores 30-36

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

Page 30: Guía de Microprocesadores 30-36

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:

Page 31: Guía de Microprocesadores 30-36

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

Page 32: Guía de Microprocesadores 30-36

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

Page 33: Guía de Microprocesadores 30-36

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

Page 34: Guía de Microprocesadores 30-36

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).

Page 35: Guía de Microprocesadores 30-36

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

Page 36: Guía de Microprocesadores 30-36

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:

 

Page 37: Guía de Microprocesadores 30-36

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

Page 38: Guía de Microprocesadores 30-36

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

Page 39: Guía de Microprocesadores 30-36

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

Page 40: Guía de Microprocesadores 30-36

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.

Page 41: Guía de Microprocesadores 30-36

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). 

Page 42: Guía de Microprocesadores 30-36

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.

Page 43: Guía de Microprocesadores 30-36

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).

Page 44: Guía de Microprocesadores 30-36

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

Page 45: Guía de Microprocesadores 30-36

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).

Page 46: Guía de Microprocesadores 30-36

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)

Page 47: Guía de Microprocesadores 30-36

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.

Page 48: Guía de Microprocesadores 30-36

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

Page 49: Guía de Microprocesadores 30-36

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

Page 50: Guía de Microprocesadores 30-36

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.

  ;

********************************************************************

Page 51: Guía de Microprocesadores 30-36

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?

Page 52: Guía de Microprocesadores 30-36

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

Page 53: Guía de Microprocesadores 30-36

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

 

Page 54: Guía de Microprocesadores 30-36

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

Page 55: Guía de Microprocesadores 30-36

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 - ¦ 

Page 56: Guía de Microprocesadores 30-36

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)

Page 57: Guía de Microprocesadores 30-36

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

Page 58: Guía de Microprocesadores 30-36

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.

Page 59: Guía de Microprocesadores 30-36

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).

Page 60: Guía de Microprocesadores 30-36

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

Page 61: Guía de Microprocesadores 30-36

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.

Page 62: Guía de Microprocesadores 30-36

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.

Page 63: Guía de Microprocesadores 30-36

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.

Page 64: Guía de Microprocesadores 30-36

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.