Está en la página 1de 103

UNIVERSIDAD NACIONAL ABIERTA

VICERRECTORADO ACADÉMICO
AREA: INGENIERÍA / CARRERA: INGENIERÍA DE SISTEMAS

MATERIAL INSTRUCCIONAL DE APOYO

NOMBRE: MICROPROCESADORES
Código: 316
U.C.: 4

CARRERA: Ingeniería de Sistemas


Código: 236

SEMESTRE: VII

AUTOR: Ing. Olga Esther Rodríguez Durán (Especialista de


Contenido)
Ing. Judit Carballo (Coordinadora Ingeniería de
Sistemas)
Lic. Carmen Velásquez de Rojas (Evaluadora)
Lic. Antonio Alfonzo MsC ( Diseñador Instruccional )

COMITÉ TÉCNICO: Dra. Egleé Arellano de Rojas ( Diseñadora )

Caracas, Octubre 2005


2

INTRODUCCIÓN
El estudio a distancia e incluso el presencial en algunos momentos es una forma de
aprendizaje que se basa específicamente en el trabajo personal de los estudiantes
con mayor o menor independencia respecto de la guía directa de los profesores. El
estudiante, al estar provisto de material autoinstruccional, puede de esta forma
acceder a un mayor grado de aprendizaje, puesto que logra profundizar o aprender
según sus ritmos y conocimientos previos. Aquí radica el potencial que tiene la
elaboración del presente Material Instruccional de Apoyo (M.I.A.), el cual junto con
el libro Los Microprocesadores Intel, de Barry B. Brey y el Software Simulador del
Microprocesador 80286 se complementan para conformar el paquete instruccional
del curso Microprocesadores, aunado a ello el estudiante cuenta con la asesoría
en los centros locales para aclarar dudas, tanto de manera presencial como a través
del correo electrónico.

El Material Instruccional de Apoyo, se ha elaborado tomando en cuenta el nivel de


conocimientos que ha obtenido el estudiante en los cursos anteriores,
particularmente en el curso Arquitectura de Computadoras el cual define las
conductas de entrada necesarias para el estudio de los microprocesadores y la
implementación de programas, para resolver un problema específico. También se
ha considerado la complejidad de cada tópico y el uso del software simulador, éste
software apoya el estudio de aquellas unidades en las cuales se realiza la
descripción y programación de un microprocesador comercial.

El Material Instruccional de Apoyo se ha organizado atendiendo a la Estructura del


Curso. El Módulo I: El Microprocesador, Arquitectura e Interfaces, consta de cuatro
unidades. El Módulo II: Familia de Microprocesadores, el Coprocesador Aritmético
y la Tecnología MMX, incluye dos unidades, por su parte en el Módulo III:
Programación del Microprocesador, se compone del estudio de dos unidades. Para
cada módulo se presenta: una breve introducción, el objetivo del módulo y las
unidades que lo componen. Por su parte cada unidad incluye: una breve
presentación, el objetivo de la unidad, una sinopsis del contenido y una serie de
actividades que el estudiante debe realizar para complementar su estudio, dentro de
estas actividades se hace énfasis en la presentación de aspectos teóricos,
ejemplos, ejercicios resueltos, ejercicios de autoevaluación, consultas a material
bibliográfico y consultas a direcciones electrónicas en la Web. Cabe destacar que
algunas de estas direcciones pueden no estar activadas al momento de la consulta,
por lo que se recomienda al estudiante acceder a otras direcciones relativas al tema
a través de un buscador (Browser) en la Web.

El estudio del curso Microprocesadores, exige el uso simultáneo del Plan de Curso
y el paquete instruccional. Estos dos componentes se interrelacionan para
proporcionarle una visión general del curso y las herramientas necesarias para el
logro del objetivo terminal.
3

Iconos empleados en el material instruccional

A lo largo de la lectura de este material encontrará diversos íconos, cuyo


significado se explica a continuación:

Ampliación de conocimientos: Está dirigido al estudiante que


desea profundizar más en sus conocimientos en determinado
tema.

Atención: Se presenta cuando se quiere hacer una aclaratoria,


una advertencia o una reflexión sobre algún aspecto del
contenido.

Consulta en la Web: Indica referencias a páginas Web



Consulta en otros libros: Se refiere a un llamado a consulta en
libros que no figuran como textos de carácter obligatorio para el
curso.

Dirección de Correo electrónico: Indica direcciones de correo


electrónico

Ejercicios propuestos: son ejercicios sugeridos a manera de


práctica sobre algún tema de la unidad.

Ejercicios de autoevaluación: Ejercicios que debe realizar el


estudiante y posteriormente verificar contra los resultados aquí
presentados.

Ejemplo: Es la exposición de un caso alusivo al tema en cuestión


y su resolución.

Recordatorio: Indica algún aspecto a enfatizar, relacionado con


los conocimientos adquiridos previamente por el estudiante.
4

MÓDULO I

EL MICROPROCESADOR, ARQUITECTURA E INTERFACES.


En este módulo se estudia la configuración interna del microprocesador visible al
programador, la manera como se direcciona la memoria y como funciona cada
instrucción en la familia de los microprocesadores Intel. El establecimiento de las
interfaces apropiadas para la conexión de los sistemas de memoria y de los
dispositivos de entrada-salida (E/S) también son objetos de estudio en este módulo.
Finalmente se profundiza en la implementación de interfaces sencillas que se
conectan a los sistemas de bus ubicados en la computadora.

Objetivo del Módulo I: Resolver con sentido lógico y creativo, problemas


inherentes a la arquitectura del microprocesador y al establecimiento de interfaces.

El módulo I está estructurado en cuatro unidades:

Unidad 1: Arquitectura del Microprocesador.


Unidad 2: Interfaz con la memoria.
Unidad 3: Interfaz de E/S Básica, Interrupciones y E/S Controlada por DMA.
Unidad 4: Interfaz del Bus.
5

UNIDAD 1

Arquitectura del Microprocesador.

El estudio del modelo de programación de los microprocesadores, puede realizarse


través de la descripción de la arquitectura interna visible para el programa. Esta
arquitectura comprende los registros que son utilizados por el programador en el
desarrollo de aplicaciones, mediante instrucciones que hacen uso de ellos. En la
Unidad I, se presentan los modelos de programación de los microprocesadores
8086 al Pentium II, pertenecientes éstos a la familia Intel, también su modo de
funcionamiento en modo real y protegido.

Las características de diseño de los microprocesadores, establecen sus


capacidades y limitaciones, por ejemplo es conveniente para el programador, que
el microprocesador tenga diversos modos de direccionamiento, ya que eso le
permitirá desarrollar software más eficiente. La Unidad I presenta los modos de
direccionamiento de datos, de la memoria y de la pila, para la familia de
microprocesadores Intel. Finalmente se incluye en esta unidad el estudio de las
instrucciones con que cuentan los miembros de esta familia, este estudio
contempla entre otros aspectos la sintaxis del lenguaje ensamblador y algunas de
sus directivas, así como también la función de cada instrucción, lo que permite
sentar bases para la programación de los microprocesadores en unidades
posteriores.

Objetivo de la Unidad 1: Aplicar los conceptos de arquitectura de los


microprocesadores en la descripción de su estructura y/o funcionamiento, dada ó no
una situación.

Contenido de la Unidad 1: El contenido de la unidad contempla el estudio de los


siguientes temas:

El microprocesador y su arquitectura.
Direccionamiento de memoria.
Paginación de memoria.
Modos de direccionamiento. Direccionamiento de la pila de memoria.
Instrucciones.
6

Actividades recomendadas para el estudio del contenido de la unidad 1.

Atención: Considerar que en el Plan de Curso de Microprocesadores, hay


un error en la sección V. Diseño de la Instrucción, en las secciones 2.1, 3.2,
4.2, 5.2 y 6.2, correspondientes a las unidades: 2, 3, 4, 5 y 6 respectivamente.
El error se encuentra en la indicación del Texto a utilizar a utilizar, donde dice:
“ Texto Organización y Arquitectura de Computadoras “. Debe decir : “ Texto:
“ Los Microprocesadores Intel. “.

1.- Examine la tabla 1.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 1:

MATERIAL DE
TÍTULO CONTENIDO CAPITULO
REFERENCIA

Arquitectura interna del


microprocesador.

Direccionamiento de
El microprocesador y El texto Los memoria en modo real.
su arquitectura. Microprocesador
2
es Intel, B. B. Introducción al
Brey. direccionamiento de
memoria en modo
protegido.

Paginación de memoria.

Modos de
direccionamiento de datos.
Modos de
Modos de El texto Los direccionamiento de la
direccionamiento. Microprocesador memoria del programa. 3
es Intel, B. B.
Brey. Modos de
direccionamiento de la
memoria de la pila.

Instrucciones para
4
El texto Los movimiento de datos.
Instrucciones. Microprocesador
es Intel, B. B. Instrucciones aritméticas y 5
Brey. lógicas.
Instrucciones de control de
6
programa.
Tabla 1.1
7

Atención: Muchos de los ejemplos que presenta el texto Los


microprocesadores Intel de B.B. Brey, usan el Microsoft MACRO Assembler
(MAMS) como herramienta de desarrollo, pero la mayoría de ellos pueden ser
ensamblados con otros ensambladores, por ejemplo ASM (Intel Assembler) y
TASM (Borland Turbo Assemler). En el curso Microprocesadores se utilizará el
Software Simulador incluido en el paquete instruccional. No obstante se
recomienda al estudiante investigar sobre el uso del MAMS, con el objeto de
ampliar sus conocimientos.

2.- Una vez leído el contendido indicado en la tabla 1.1, usted estará en capacidad
de responder lo siguiente:

2.1 ¿Qué es el modelo interno de programación de un microprocesador?


2.2 ¿Por qué se puede afirmar que el modelo de programación de los
microprocesadores Intel, es visible para el programa?
2.3 ¿Qué microprocesadores Intel contienen registros de 8 y 16 bits?
2.4 ¿Cuál es la función de los registros de propósito específico para los
microprocesadores Intel?
2.5 ¿Cuál es la función y propósito de los registros de segmento: CS, DS, ES y
SS?
2.6 ¿Cuáles son las principales ventajas de los siguientes direccionamientos de
datos: inmediato, directo, indirecto, registro, indirecto con registro?
2.7 ¿Cuáles son los tres modos de direccionamiento de memoria de programa?
2.8 ¿Cuáles registros controlan la memoria de la pila?
2.9 ¿Cuáles son los códigos de operación que transfieren datos entre la pila y
las banderas?
2.10 ¿Cuáles son los registros que emplean las estructuras de transferencia de
cadenas de datos para direccionar memoria?
2.11 ¿Qué es una directiva de lenguaje ensamblador?
2.12 ¿Para qué son empleadas las directivas PROC y ENDP?
2.13 Un microprocesador 80386 opera en el modo protegido y utiliza un registro
de 32 bits, ¿Es necesario que el código de operación esté precedido del
prefijo de tamaño de registro? Razone su respuesta.
2.14 ¿Cuál es la función de la directiva .MODEL?

3.- Estudie el ejemplo 1.1, en el cual se presentan los modelos de programación de


dos microprocesadores de 8 bits.

Ejemplo 1.1: Modelo de programación de los microprocesadores de 8 bits:


8080 y Z80.

El microprocesador Z80 de Zilog es una versión apreciablemente mejorada tanto


en circuitería como en características de programación del modelo INTEL 8080,
el Z80 resulta ser un microprocesador más rápido y sencillo en el desarrollo de
8

sistemas ya que solo usa una fuente de alimentación de +5 Volts, contiene


íntegramente todo el conjunto de instrucciones del 8080, lo cual le permite
ejecutar todos los programas escritos para el CPU 8080, contiene el Z80 una
expansión adicional de 80 instrucciones de ahí se deriva su nombre, su
repertorio suma un total de 156 instrucciones. Esta significativa mejora puede
apreciarse si se comparan los modelos de programación de cada uno de ellos.

Se presentan a continuación los modelos de programación de los


microprocesadores 8080 de Intel y el Z80 de Zilog, así como también la
descripción y funcionamiento de cada uno de los registros que los conforman.

MODELO DE PROGRAMACIÓN DEL MICROPROCESADOR 8080

En la figura 1.1 se presenta el modelo de programación de este


microprocesador , el cual dispone de los siguientes registros:

• Un registro acumulador de 8 bits (también llamado registro A).


• Seis registros de propósito general de 8 bits (B, C, D, E H y L.), que con
algunas instrucciones pueden usarse como registros pares de 16 bits (B-C,
D-E y H-L).
• Dos registros de 16 bits de propósito específico: un puntero de Stack (SP,
siglas en inglés de Stack Pointer)) y un contador de programa (PC, siglas en
inglés de Counter Program).
• Cinco flags (banderas) de 1 bit cada una que posee la unidad aritmético
lógica y cuyo contenido es modificado después de la ejecución de numerosas
instrucciones lógicas y aritméticas. Estas flags son: S, C, A, P y C.

Registro acumulador

Registros de propósito general

B C
D E
H L

Registros de propósito específico

SP (Stack Pointer)
PC (Program Counter)

Flags (banderas)

Figura 1.1 Modelo de programación del microprocesador Intel 8080


9

Atención: El registro Flags contiene 8 bits, pero solo se utilizan los cincos bits
menos significativos, que corresponden a las cinco banderas: S, C, A, P y C.

MODELO DE PROGRAMACIÓN DEL MICROPROCESADOR Z80

El modelo de programación de este microprocesador (ver figura 1.2), está


compuesto por un banco principal, otro alternativo y por último un banco
compuesto por registros especiales. La existencia del banco alternativo mejora
la velocidad ante la presencia de las interrupciones ya que permite cambiar
desde el banco principal al alternativo. Los registros son:

• Hay 2 grupos de registros de propósito general. Cada grupo contiene 6


registros de 8 bits, que pueden ser usados individualmente como registros de
8 bits o en parejas como registros de 16 bits. Un grupo se llama BC, DE y HL
y el otro BC’, DE’ y HL’. El programador puede cambiar a cualquiera de los
dos grupos de registros con una simple instrucción de intercambio.
• Registros de Acumuladores y Banderas: El Z80 tiene 2 registros
acumuladores independientes de 8 bits (comúnmente llamados A y A´) y 2
registros de banderas asociados a los 2 acumuladores (F y F´). Los
acumuladores almacenan los resultados de operaciones aritméticas o lógicas
de 8 bits, y los registros de banderas indican condiciones para operaciones
de 8 y 16 bits. Estas banderas son S, Z, A, P, N y C. El programador puede
usar el par acumulador-bandera que desee y puede cambiar al otro par con
una simple instrucción de intercambio.
• Registros de propósito específico:
- Dispone del registro Program Counter (PC) de 16 bits, que contiene la
dirección de la instrucción que se debe buscar en la memoria.
- El Stack Pointer (SP) de 16 bits, el cual contiene la dirección del tope
actual de la pila.
- Dos Registros Índice (IX, IY), son dos registros independientes que
contienen los 16 bits de direcciones que se usan en modos de
direccionamiento indexado. En este modo, un registro índice se usa
como base para apuntar a una región en memoria en la cual el dato
será almacenado o recuperado.
- El Registro de Interrupciones (I): El Z80 puede operar en un modo
donde cualquier posición de memoria puede lograrse en respuesta de
una interrupción. Este registro se usa para almacenar los 8 bits más
significativos de la dirección, mientras el periférico que interrumpe
provee los 8 bits menos significativos. Esto da la posibilidad de que las
rutinas de interrupción sean localizadas dinámicamente en cualquier
parte de la memoria con un mínimo tiempo de acceso a la rutina.
- El Registro de Refresco de Memoria (R), de 8 bits que almacena el
bloque de memoria a cuyo refresco se va a proceder.
10

Registros del banco principal Registros del banco alternativo

A F A´ F´
B C B´ C´
D E C´ E´
H L H´ L´

Registros Índice

IX
IY

Registros de pila y contador del programa

SP
PC

Registro de interrupciones y de refresco de memoria

I
R

Figura 1.2 Modelo de programación de microprocesador Zilog Z80.

Atención: El texto utilizado para el estudio del Curso Microprocesadores se


basa en los modelos fabricados por la compañía Intel, sin embargo se utiliza
en este ejemplo, el microprocesador Z80 desarrollado por la compañía Zilog,
con el objeto de que el alumno amplíe sus conocimientos.

4.- Lea el siguiente contendido teórico, el cual le aportará conocimientos necesarios


para describir cómo acceder a la memoria de un computador, usando la técnica
de direccionamiento de memoria en modo real.

Una de las funciones básicas que debe implementar un SO (Sistema Operativo)


es la Administración de la Memoria, para tener un control sobre los lugares
donde están almacenados los procesos y datos que actualmente se están
utilizando. El direccionamiento de la memoria puede considerarse desde dos
puntos de vista: físico y lógico. El primero se refiere a los medios electrónicos
utilizados en el computador para acceder a las diversas posiciones de memoria,
el segundo, a la forma en que se expresan y guardan las direcciones.

El sistema de numeración utilizado para representar las direcciones de memoria


no suele ser el decimal, sino el hexadecimal. La razón es que los números
11

hexadecimales guardan cierta concordancia con las potencias de 2. Por


ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones
(28 = 256), expresado en hexadecimal es el rango 00-FF H. En caso de
direcciones de 16 bits, se puede acceder 65.536 posiciones (es el rango 0000-
FFFF H). El bus de direcciones del PC XT, tiene 20 bits, las posibilidades son
1.048.576 (es el rango 00000-FFFFF H).

Como veremos a continuación, puede utilizarse una doble notación: direcciones


absolutas, indicadas por un hexadecimal de cinco dígitos, en el rango 00000-
FFFFF H, o en direcciones segmentadas, que utiliza dos grupos de cuatro
dígitos hexadecimales.

El direccionamiento segmentado, consiste en la asignación de bloques de


memoria de tamaño variable, llamados segmentos. El tamaño de cada segmento
será el requerido según la petición, por ejemplo el tamaño del proceso a cargar.
El tamaño máximo para un segmento estará determinado por la capacidad de
direccionamiento del hardware de la computadora, esto es, de cuantos bits se
dispone para almacenar una dirección. El acceso a cada elemento individual
(byte) en la memoria se hace mediante una dirección de memoria que se integra
por dos elementos: una dirección de segmento y una de desplazamiento.
La combinación (suma) de la dirección de segmento y la de desplazamiento
generan la dirección de memoria absoluta a acceder, tal como se muestra en la
figura 1.3, mostrada a continuación:

Tabla de segmentos
Po 400

P1 250
250
P2 1200
P1
Dirección lógica Dirección absoluta

12 400
Po + 400+12 Po

1200
P2

Figura 1.3 Esquema de direccionamiento de memoria en modo real


12

Atención: Una dirección lógica indica una posición relativa al comienzo de


un programa, las instrucciones de programas contienen solo direcciones
lógicas. Una dirección física es, por supuesto, la posición actual en la
memoria principal. Cuando el procesador ejecuta un proceso,
automáticamente convierte las direcciones lógicas en físicas.

5.- Estudie el ejemplo 1.2, en el cual se muestra un programa de aplicación que


contiene un segmento de código, datos y pila cargado en un sistema DOS de
memoria.

Ejemplo 1.2: Almacenamiento de un programa de aplicación en el sistema


DOS de memoria.

El bus del PC XT contiene 20 líneas, estas líneas contienen las direcciones que
identifican la parte del computador que comunica. Las direcciones son de dos tipos;
unas se refieren a direcciones de memoria; otras a direcciones de puertos de E/S.
Con los datos anteriores, resulta evidente que el PC XT puede manejar 1.048.576
direcciones (220). Sin embargo, el microprocesador 8088 presente en el XT dispone
de registros de 16 bits que solo pueden albergar 65.536 posiciones (216), muy
alejado del valor anterior. Para resolver el problema, se utilizan las direcciones
segmentadas, compuestas por dos palabras de 16 bits que se componen para
formar una dirección de 20 bits (esta dirección es denominada también como
dirección absoluta). Para generar estas direcciones el 8088 dispone de cuatro
registros de segmento: CS, SS, DS y ES.

Los aspectos concretos de almacenamiento de un programa dependen de la


plataforma; no existe un modelo único. En la figura 1.4 se muestra como se utilizan
los registros de segmento para señalar las direcciones de inicio de los diversos
módulos de un programa cargado en memoria, dentro del espacio de memoria
direccionable con 20 bits (00000-FFFFF H).
13

FFFFF H

Registros de puntero

Segmento de código
IP

SP
Fin de la pila
BP
Segmento de pila
Registros de segmento

CS
Segmento de datos
SS

DS
Segmento extra de datos
ES

00000 H

Figura 1.4 Programa de aplicación cargado en un sistema de memoria DOS


6.- Estudie el ejemplo 1.3, en el cual se aplica el manejo de memoria en modo
protegido, para describir cómo el microprocesador 80386 asigna las localidades
de memoria a un segmento de datos.

Ejemplo 1.3: Manejo de memoria en modo protegido.

En la ejecución de un programa en un sistema basado en microprocesador


80386, se requiere en un instante dado almacenar datos en la memoria, bajo
estas condiciones el contenido del registro de segmento de datos DS es el
mostrado en la figura 1-5:

0000000000001 0 00

Solicita nivel de privilegio 00


Elige descriptor en la tabla de descriptores
globales

Selecciona descriptor número 1


Figura 1.5 Contenido del registro de segmento DS
14

Y el formato del descriptor número 1 contenido en la tabla de descriptores


globales es el siguiente:

Ocho bytes del


descriptor

7 0000 0000 0000 0000 6

5 1111 0010 0001 0000 4

3 0000 0000 0000 0000 2

1 0000 0000 1111 1111 0

Figura 1.6 Formato del descriptor número 1


El inicio y fin del segmento de datos será el siguiente:
Base = 00100000 H
Límite = 000FF H
Final = Base + Límite = 00100000 H + 000FF H
Final = 001000FF H.
Se puede concluir entonces, que el microprocesador utilizará las localidades de
memoria comprendidas en el rango: 00100000 H – 001000FF H para almacenar
el segmento de datos.

7.- Estudie el ejemplo 1.4, en el cual se presenta uno de los cuatro mecanismos de
manejo de la memoria disponible en el microprocesador Intel Pentium II.

Ejemplo 1.4: Gestión de memoria segmentada paginada en el Pentium II.

El Pentium II incluye hardware, tanto para segmentación como para paginación.


Cuando ambos mecanismos están activados, se puede ver la memoria
segmentada paginada.
La segmentación define particiones lógicas de memoria en el control de acceso.
Por su parte con la paginación, se gestiona la asignación de memoria dentro de
las particiones.
Cuando se utiliza segmentación las direcciones utilizadas en los programas son
direcciones virtuales (llamadas también direcciones lógicas), estas direcciones
constan de una referencia al segmento de 16 bits y un desplazamiento de 32
bits. El mecanismo de traducción de dirección para la segmentación implica
hacer corresponder una dirección lógica con la dirección lineal. El siguiente paso
es la traducción de una dirección lineal a una dirección física de 32 bits. La figura
15

1.7 se ilustra la combinación de los mecanismos de segmentación y paginación


disponibles en el Pentium II.

Dirección Segmentación Paginación


lógica

Dirección lineal
+ Dir. Página Desplazamiento
D
e Dirección
s física
p +
l
a
z
a
m
i
e
n
t
o

S
e
g
m
e Directorio de Tabla de Memoria
n páginas páginas principal
t
o
Tabla de
segmentos

Figura 1.7 Mecanismos de traducción de una dirección de memoria en el Pentium II

Atención: Las particiones son bloques de memoria que pueden tener


tamaño fijo o tamaño variable.

8.- Estudie el contenido de la Tabla 1.2, en la cual se presentan los registros de 8,


16 y 32 bits utilizados por la familia de microprocesadores Intel, para el
direccionamiento de registro.
16

REGISTROS DE 8 REGISTROS DE 16 REGISTROS DE 32


BITS BITS BITS

AH AX EAX
AL BX EBX
BH CX ECX
BL DX EDX
CH SP ESP
CL BP EBP
DH DI EDI
DL SI ESI
CS
ES
DS
SS *
FS
GS

* Nota: Son utilizados por algunas instrucciones MOV, así como también por las
instrucciones PUSH y POP.
Tabla 1.2

9.- Estudie el ejemplo 1.5, en el cual se describen los modos de direccionamiento


disponibles en el Pentium II.

Ejemplo 1.5: Modos de direccionamiento del Pentium II.

En el mecanismo de traducción de direcciones del Pentium II presentado en la


figura 1.8, se obtiene una dirección lineal que pasa por un mecanismo de
traducción de páginas para producir una dirección física. En el ejemplo que se
presenta a continuación se ignora el paso de paginación, ya que éste es
transparente para el repertorio de instrucciones y para el programador.

El Pentium II está equipado con diversos modos de direccionamiento, ideados


para permitir la ejecución eficiente de lenguajes de alto nivel. En la figura 1.8 se
muestra el hardware involucrado y en la Tabla 1.3 los modos de
direccionamiento disponibles.
17

Registro de segmento

Selector SS
GS Registro base
Selector
FS
Selector ES
Selector
DS
Selector Registro índice
CS
Selector

Escala: 1,2 u 8

Desplazamiento (en
+ la instrucción, 0, 8 ó
32 bits)

Registros descriptores Dirección


efectiva
Derechos de SS
acceso
Derechos de GS Dirección lineal
acceso
Límite de FS +
Derechos
acceso
Límite de ES
Derechos
Dirección base
acceso
Límite
Derechos de DS
Dirección base
accesoLímite de CS
Derechos
Dirección
acceso base
Límite
Dirección base
Límite
Dirección base
Dirección base

Figura 1.8 Cálculos en el modo de direccionamiento del Pentium II


18

MODO ALGORITMO DESCRIPCIÓN


El operando se incluye en la
instrucción. El operando puede ser un
byte, una palabra o una palabra doble
Inmediato Operando = A
de datos. Este modo puede utilizarse
para definir y utilizar constantes, o para
fijar valores iniciales de variables.
El operando está situado en un registro.
Si se hace un uso masivo de este
direccionamiento en un repertorio de
instrucciones, los registros de la CPU
Registro LA = R se emplearán intensamente, y debido al
número limitado de registros en
comparación con el número de
posiciones de la memoria principal, se
recomienda usarlo eficientemente.
El desplazamiento del operando está
incluido, formando parte de la
instrucción. Debido a que implica
Con instrucciones largas, se puede
LA = (SR) + A
desplazamiento encontrar en pocas máquinas, en el
Pentium II, el valor del desplazamiento
puede ser de 32 bits, haciendo que la
instrucción tenga 6 bytes.
Especifica que uno de los registros de
Base LA = (SR) + (B) 8, 16 o 32 bits contiene la dirección
efectiva
La instrucción incluye un
desplazamiento que hay que sumar a
un registro base, que puede ser
cualquiera de los registros de uso
general. Un ejemplo de uso de este
Base con modo es: utilización por un compilador
LA = (SR) + (B) + A
desplazamiento para apuntar al comienzo de una zona
de variables, en este caso el registro
base apunta al comienzo de un marco
de pila, que contiene las variables
locales para el procedimiento
correspondiente.
La instrucción incluye un
desplazamiento a sumar a un registro,
Índice escalado llamado en este caso registro índice. El
con LA = (SR) + (I) x S + A registro índice puede ser cualquiera de
desplazamiento los registros de uso general excepto el
ESP. Este modo es muy conveniente
para indexar matrices.
19

MODO ALGORITMO DESCRIPCIÓN


Suma los contenidos de los registros
base e índice, y un desplazamiento
para formar la dirección efectiva. Como
Base con ejemplo, este modo de
índice y LA = (SR) + (B)+ (I) + A direccionamiento podría emplearse
desplazamiento para manejar una matriz bidimensional;
en este caso el desplazamiento apunta
al inicio de la matriz, y cada registro
gestiona una dimensión de la misma.
Suma el contenido del registro índice,
multiplicado por un factor de escala,
Base con con el contenido del registro base y el
índice escalado LA = (SR) + (I) x S + desplazamiento. Es útil Este modo
y (B) + A permite la indexación eficiente de una
desplazamiento matriz bidimensional cuando los
elementos de la misma tienen
longitudes de 2, 4 u 8 bytes.
Se suma un desplazamiento al valor del
contador del programa que apunta a la
Relativo LA = (PC) + A siguiente instrucción. Puede emplearse
en instrucciones de transferencia del
control (control de flujo).

LA = dirección lineal (X) = contenido de X


SR = Registro de segmento PC = Contador de programa
A = Contenido de un campo de R = Registro
dirección de la instrucción B = Registro Base
I = Registro índice S = Factor de escala

Tabla 1.3 Modos de direccionamiento del Pentium II.

10.- Estudie el ejemplo 1.6, en el cual se ilustra el uso de la pila para el paso de
parámetros entre funciones, en el lenguaje C de alto nivel.

Ejemplo 1.6: Uso de la pila cuando se invoca una función en lenguaje C.

En el lenguaje C normalmente se utiliza la pila para pasar parámetros entre


funciones. Antes de realizar la llamada a una función se insertan en la pila todos
los parámetros luego se invoca a la función y ésta lee los parámetros de la pila.

Cuando se realiza la invocación de una función utilizando las instrucciones CALL


y RET, la estructura típica de la pila es la que se muestra en la figura 1.9:
20

Segmento de pila

Final de la pila
(valor inicial de ESP)

Variables locales
pasadas al
procedimiento llamado

Parámetros pasados
al procedimiento
llamado EBP apunta a la
dirección de la
instrucción de retorno

Dirección de la instrucción de Registro EBP


retorno
Registro ESP

Tope de la pila

Figura 1.9 Uso de la pila cuando se invoca un función en lenguaje C

El orden en el que se insertan los parámetros en la pila es importante. Los últimos


parámetros en insertarse en la pila son los primeros parámetros en la declaración
de la función C.

11.-Estudie el ejemplo mostrado a continuación en el cual se convierte una


instrucción escrita en lenguaje de máquina a lenguaje ensamblador, para los
casos en que un microprocesador 80386 o posteriores, opera en el modo de
instrucciones de 16 bits y de 32 bits.

Ejemplo 1.7: Instrucción 668BEC H convertida a su forma de lenguaje


ensamblador, cuando es ejecutada en un microprocesador
80386 o posteriores, operando en el modo de instrucciones
de 16 bits.
21

El microprocesador opera en el modo de instrucciones de 16 bits.

La instrucción consta de tres bytes: 66 H, 8B H y EC H y el formato de la


instrucción en binario será el siguiente:

Byte 1 (66 H) Byte 2 (8B H)

0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 1

W
D

Prefijo de tamaño de registro Código de operación

Byte 3 (E8 H)

1 1 1 0 1 0 0 0

MOD REG R/M

El byte 1: Selecciona operandos de registro de 32 bits.

El byte 2: Contiene el código de operación conformado por los seis bits más
significativos (100010), que corresponden a la operación MOV. El bit de dirección D
indica que la palabra doble (W = 1) será movida al registro destino.

El byte 3: Puesto que el campo MOD contiene 11, el campo R/M indica que es un
registro. Las asignaciones de REG y R/M serán las siguientes:

- REG = 101, que corresponde al registro de 32 bits EBP (operando destino)


- R/M = 000, que corresponde al registro de 32 bits EAX (operando fuente)

La instrucción escrita en lenguaje ensamblador es MOV EBP, EAX. Esta instrucción


mueve la palabra doble desde el registro EAX al registro EBP.

Atención: El ejemplo 1.7 está incluido en el texto Los microprocesadores


Intel, pero es explicado con más detalle en el presente material.
22

12.-Estudie el ejemplo 1.8, en el cual se presenta un pequeño programa escrito en


lenguaje ensamblador que muestra el uso de la instrucción para transferencia de
datos MOV y el empleo de algunas directivas.

Ejemplo 1.8: Aplicación de la instrucción MOV de transferencia de datos y


las directivas ORG, DB y DW.

ORG 1000 H
var_byte DB 20 H
var_word DW ?
ORG 2000 H
MOV AX, 1000 H
MOV BX, AX
MOV BL, var_byte
MOV var_word, BX
END
AX BX Instante
En el programa anterior, se observa el uso el uso más común de la directiva
ORG. La idea es separar las variables del programa. En el programa, las
variables serán almacenadas a partir de la dirección 1000 H mientras que las
instrucciones del programa estarán a partir de la dirección 2000 H.
La primera instrucción MOV asigna el valor inmediato 1000 H al registro AX.
Esta instrucción emplea el modo de direccionamiento conocido como
“inmediato”. Como ambos son valores de 16 bits, no hay inconveniente en esa
asignación.
El siguiente MOV asigna el contenido del registro AX al registro BX. De nuevo,
como ambos son de 16 bits, es una asignación válida. El modo de
direccionamiento que usa es el denominado “registro”.
El tercer MOV asigna el contenido de la variable “var_byte” (que es 20 H) al
registro BL. Como BL es la parte baja de BX, pasa de 1000 H a 1020 H. Como
BL y “var_byte” son ambos de 8 bits, es una asignación permitida. Además, se
emplea el modo de direccionamiento “directo”.
El último MOV asigna el valor contenido en el registro BX a la dirección de
memoria a la que “var_word” hace referencia. Ahora, “var_word” contiene el
valor 1020 H.

13.-Estudie el ejemplo 1.9, en el cual se presenta un pequeño programa escrito en


lenguaje ensamblador que muestra el uso de las instrucciones aritméticas ADD y
ADC.

Ejemplo 1.9: Aplicación de las instrucciones aritméticas ADD (suma) y ADC


(suma con acarreo).
23

ORG 1000 H
dato1_l DW 0FFFF H
dato1_h DW 0015 H
dato2_l DW 0011 H
dato2_h DW 0002 H
ORG 2000 H
MOV AX, dato1_l
ADD AX, dato2_l
MOV BX, dato1_h
ADC BX, dato2_h
END

Note que la segunda suma es realizada usando un ADC y no un ADD. De esta


manera, si en el ADD se produce un acarreo, éste es sumado junto a dato1_h y
dato2_h durante el ADC, produciendo el resultado correcto.

14.-Estudie el ejemplo 1.10, en el cual se emula una instrucción de un lenguaje de


alto nivel en lenguaje ensamblador, utilizando instrucciones aritméticas, de salto
(condicional e incondicional) y de transferencia de datos.

Ejemplo 1.10: Aplicación de instrucciones del lenguaje ensamblador para


codificar la estructura de control IF THEN ELSE del lenguaje
Pascal.

No existe una instrucción en el lenguaje ensamblador que sea capaz de hacer lo


que hace la estructura IF-THEN-ELSE de Pascal. Sin embargo, es posible
emularla mediante la combinación de instrucciones CMP y saltos condicionales
e incondicionales.

Por ejemplo, para simular el siguiente código de Pascal:

IF AL = 4 THEN
BEGIN
BL = 1;
CL = CL + 1;
END;
Se debe comenzar calculando la condición del IF, en este caso, comparar AL
con 4. Eso se logra con una instrucción CMP:
CMP AL, 4
Esta instrucción alterará los flags y en particular, interesa ver al flag Z, ya que si
dicho flag está en 1, implica que al restar AL con 4, el resultado dio 0, por lo que
AL tiene que valer 4. Entonces, si esa condición es verdadera, se debería
ejecutar las instrucciones que están dentro del THEN. Si no, se evita ejecutarlas.
24

Una solución que permite esto es la siguiente:

CMP AL, 4 ;(1)


JZ Then ;(2)
JMP Fin_IF ;(3)
Then: MOV BL, 1 ;(4)
INC CL ;(5)
Fin_IF: HLT ;(6)

Analizando el código se puede establecer lo siguiente para cada uno de los


comentarios:
• Si la comparación en (1) establece el flag Z en 1, el salto en (2) se produce,
haciendo que la ejecución continúe en la etiqueta Then. Ahí, se ejecutan las
instrucciones (4) y (5) que hacen lo que se encuentra en el THEN del IF y
continúa la ejecución en la instrucción apuntada por la etiqueta Fin_IF
• Si el flag Z quedó en 0 en (1), el salto en (2) no se produce, por lo que la
ejecución continúa en la próxima instrucción, el JMP en (3), que saltea las
instrucciones y continúa la ejecución en la instrucción apuntada por la
etiqueta Fin_IF , que señala el final del IF.
• En el final del IF, se ejecuta un HLT (6) para terminar la ejecución del
programa.

15.- Resuelva las preguntas y los problemas presentados en el texto indicado en la


bibliografía obligatoria.

Ejercicios propuestos

1.- Aplique los conceptos de modelo de programación estudiados y describa el


modelo interno de programación de los microprocesadores de 16 y 32 bits de la
familia Intel, utilizando el mismo esquema presentado en el ejemplo 1.1.
2.- Se propone al estudiante realizar el ejemplo 1.3, utilizando el sistema de
codificación hexadecimal para especificar el contendido del descriptor.
3.- Determine la dirección de memoria a la cual accede cada una de las siguientes
instrucciones con el modo de operación real (asuma para ello que DS = 0200 H,
BX = 0300 H y DI = 400 H):
a) MOV EAX,[BX]
b) MOV [DI],AL
4.- Se propone al estudiante realizar el ejemplo 1.7, pero considerando que el modo
de instrucciones es de 16 bits.
5.- Desarrolle una secuencia de instrucciones que intercambie el contenido de AX
con BX, el de ECX con EDX y el de SI con DI.
6.- Explique cómo se convierte la instrucción AAM de binario a BCD.
25

Consulta en otros libros

[Sayers 1995] trata arquitecturas prácticas de microprocesadores de 8, 16 y 32 bits.

[Stallings 2000] Incluye material sobre: la organización de los registros visibles al


usuario (modelo de programación), los modos de direccionamiento y el
repertorio de instrucciones.

[Lameda 1984] presenta el estudio de microprocesadores de 8 bits.

[Flyn85] Flynn, M,;Jonson, J.; and Wakefield, S. On Instruction Sets and Their
Formats IEEE Transactions on Computer, September 1987. Contiene aspectos
de diseño de repertorios de instrucciones, particularmente aquellos relativos a
los formatos.

[Tanenbaum 2000] en el cual se presentan los foatos de las intrucciones, los modos
de direccionamiento y los tipos de instrucciones. Tambien presenta el nivel del
lenguaje ensamblador.

Además se encuentra información sobre la arquitectura del microprocesador en


cualquiera de los textos recomendados

 Consulta en la Web

http://www.itlp.edu.mx/publica/tutoriales/ensamblador/indice5.htm : Contiene
información sobre los elementos básicos del lenguaje ensamblador.

http://weblidi.info.unlp.edu.ar/catedras/organiza/download/apunte4.pdf : Contiene
información sobre las instrucciones y directivas del lenguaje ensamblador.

http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo4.html: Incluye
información interesante sobre la segmentación y la paginación de memoria.

http://futura.disca.upv.es/~eso/es/t2-arquitectura/gen-t2-arquitectura.html: Presenta
una introducción a la arquitectura IA-32 de los microprocesadores Intel.
26

Ejercicios de Autoevaluación

1.- Responda con sus propias palabras los siguientes cuestionamientos:

a) ¿Cuál es la función de un registro de segmento en el direccionamiento de


memoria en modo protegido?
b) ¿Cuál es la función del TLB (buffer de referencia de traducción), ubicado
dentro del microprocesador 80486?

2.- ¿Cuáles son las localidades de inicio y final que direcciona un descriptor del
microprocesador 80286 con una dirección de base de A00000 H y un límite de
1000 H?

3.- Represente en forma gráfica un descriptor que describa un segmento de


memoria bajo las siguientes condiciones:

• Inicie en la localidad 03000000 H y termine en la localidad 05FFFFFF H.


• El segmento de memoria es un segmento de datos que crece hacia arriba en
el sistema de memoria y puede ser escrito.
• El descriptor es para un microprocesador 80386.

4.- Genere en forma gráfica la dirección de memoria a la cual accede la instrucción


MOV AL,[1234 H] con el modo de operación real (suponga para ello que
DS = 0200 H y que en la localidad de memoria 3134 H se encuentra almacenado
el valor 8A H).

5.- Desarrolle una secuencia corta que incluya instrucciones de transferencia de


datos y lógicas, la cual permita establecer en 1 los cinco bits del extremo
derecho de DI, sin cambiar los bits restantes de éste. La secuencia guardará el
resultado en SI, con el objeto de no cambiar el contenido original de DI.

Respuesta a los Ejercicios de Autoevaluación

1.- A continuación las respuestas:

a) El registro de segmento contiene un selector que elige a un descriptor de la


tabla de descriptores ya sea local, o global, también contiene el nivel de
privilegio solicitado.
b) El TLB almacena las 32 últimas traducciones de la dirección lineal a la física
de la unidad de paginación.
27

2.- El inicio y fin del segmento será el siguiente:

Base = Inicio = A00000 H


Final = Base + límite = A00000 + 1000 h
Final = A01000 H

3.- Utilizando el formato presentado el ejemplo 1.3:

Ocho bytes del


descriptor

7 0000 0011 1001 0000 6

5 1001 0010 0000 0000 4

3 0000 0000 0000 0000 2

1 0010 1111 1111 1111 0

4.- A continuación se genera la dirección para la instrucción MOV AL,[1234 H]:

AH AL
EAX 8A H 8A H 8A H 3134 H

EBX

ECX

CS
0200 H DS x 10 H
DS +

1234 H
28

5.- La secuencia será la siguiente:

MOV SI, DI
OR SI, 1F H
29

UNIDAD 2

Interfaz con la Memoria.

En computadores antiguos, la forma más común de almacenamiento de acceso


aleatorio para la memoria principal consistía en una matriz de pequeños anillos
ferromagnéticos denominados núcleos. Pero con el advenimiento de la
microelectrónica y sus ventajas, nació el uso de las memorias semiconductoras
para la memoria principal. En esta unidad se exploran aspectos claves de esta
tecnología, se inicia con el estudio de la organización y funcionamiento de los
dispositivos semiconductores de memoria, específicamente los cuatro tipos más
comunes: ROM (memoria de sólo lectura), EEPROM (memoria de sólo lectura,
borrable y programable eléctricamente), SRAM (memoria estática de acceso
aleatorio) y DRAM (memoria dinámica de acceso aleatorio).
Una vez estudiados los componentes que conforman la memoria principal del
microprocesador, es necesario que se ensamblen estos componentes en forma
correcta a objeto de producir un sistema de memoria adecuado para un
microprocesador. Debe considerarse la cantidad de memoria requerida y el método
óptimo de conectar a toda la memoria del microprocesador. Por esto se incluye en
la unidad 2, la solución de problemas de conexión de la memoria al
microprocesador mediante la interfaz adecuada, específicamente para la familia de
los microprocesadores Intel.

Objetivo de la Unidad 2: Resolver problemas de conexión de la memoria al


microprocesador, mediante el uso de la interfaz apropiada.

Contenido de la Unidad 2: El contenido de la unidad 2 incluye el estudio de los


siguientes temas:

2.1 Dispositivos de memoria


2.2 Decodificación de la dirección
2.3 Interfaz de memoria para los microprocesadores de 8, 16,
32 y 64 bits
2.4 RAM dinámica
30

Recomendaciones para el estudio del contenido de la unidad 2.

1.- Examine la tabla 2.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 2.

MATERIAL
TÍTULO DE CAPITULO CONTENIDO SECCIÓN
REFERENCIA
Dispositivos de
10.1
memoria.
Decodificación de la
10.2
dirección.
El texto Los Interfaz de la
Interfaz con la Microprocesa 10 memoria de los
memoria. dores Intel, microprocesadores 10.3 -10.6
B. B. Brey. de 8, 16, 32 y 64
bits.

RAM dinámica. 10.7


Impresoras.

Tabla 2.1

2.- Una vez leído el contendido indicado en la tabla 2.1, usted estará en capacidad
de responder lo siguiente:

2.1¿Cuáles son los terminales de conexión comunes a todos los dispositivos de


memoria?
2.2¿Por qué es necesario decodificar las líneas de dirección del
microprocesador?
2.3 ¿Qué es una interfaz de memoria?
2.4¿Qué tipos de conexión son comunes para todos los dispositivos de
memoria?
2.5 ¿Cuántas palabras se encuentran en un dispositivo de memoria que tenga 8
conexiones de dirección?

3.- Estudie la figura 2.1, la cual ilustra una jerarquía de memoria típica, como la que
se podría encontrar en una computadora de tamaño moderado. Tome en cuenta
que no es la única configuración que se podría usar; pero sirve para ilustrar lo
que podría esperarse encontrar cuando se estudia una computadora real.
31

Memoria principal Unidades de disco Unidad de cinta usada para


que consiste en usadas para almacenar datos y
RAM y ROM. Almacenar datos programas que ya no se
Almacena el programas para uso requieren o para protección
programa y datos a futuro. Contra fallas de memoria
Actuales. Principal o disco.

Lectura/escritura Lectura/escritura

Figura 2.1 Jerarquía típica de memoria.

Atención Las unidades de almacenamiento de disco y de cinta no son objeto


de estudio del curso Microprocesadores.

4.- Examine la figura 2.2 presentada en el ejemplo 2.1, esta arquitectura ilustra una
arquitectura típica de un arreglo de memoria. En el arreglo, m bits de dirección
se dividen en t bits de dirección de fila y s bits de dirección de columna, para
simplificar los decodificadores a utilizar.

Ejemplo 2.1: Arquitectura típica de un arreglo de memoria.

La memoria de la figura 2.2 tiene n bits de capacidad, o sea que puede


almacenar n bits de datos. Para acceder a cualquiera de estas n celdas de
memoria es necesario suministrar una dirección única para identificar la
localización requerida dentro del arreglo de memoria.

El acceso o decodificación de la dirección requerida se facilita dividiéndola en


direcciones de fila y columna para aplicarlas al arreglo de memoria. Los m bits
de dirección se dividen en t bits de dirección de fila y s de dirección de columna,
lo que simplifica mucho los decodificadores requeridos en el chip de memoria.
En vez de utilizar un decodificador de línea m a línea 2m, basta con dos
decodificadores de línea más pequeños y simples, t a línea 2t y línea s a línea 2s.
Además si m es un número par, es decir s y t son iguales, se puede simplificar
todavía más el chip de memoria ya que solo se requiere un tipo de decodificador
aunque se necesiten dos
32

Dirección de columna
1. . . . . . . s

Decodificador

2s
Dirección de
fila

1
. Arreglo de
. Decodi- memoria
. ficador 2t
.
.
t

Celda de la
memoria

Controladores de escritura y
______ amplificadores de detección, más
Lectura/escritura multiplexor de entrada/salida

Salida Entrada

Figura 2.2 Arquitectura típica de un arreglo de memória de 2n celdas.

5.- Estudie el ejemplo 2.2, el cual explica en términos generales la forma en que se
lleva a cabo la corrección de errores en las memoria semiconductoras.
33

Ejemplo 2.2: Código corrector de errores.

“Un error en un sistema digital producirá que un 1 se reemplace con un 0 o que


un 0 se reemplace con un 1. Es esencial que los errores se detecten de manera
que se haga algo para rectificarlos” [Sayers,1995].

Las memorias semiconductoras están sujetas a errores. Es por esto que la


mayoría de los sistemas de memoria modernos incluyen lógica para detectar y
corregir errores. La figura 2.3, ilustra en términos generales como se lleva a
cabo este proceso.

Salida de error

Salida de datos M
Corrector

Entrada de datos
M M k

k f Compa -
Memoria k ración
f

Figura 2.3 Código corrector de errores.

Cuando se van a escribir datos en memória, se realiza un cálculo com los datos
representado por la función f, para producir un código. Se almacenan tanto los
datos como el código en la memoria. De esta manera se va a almacenar una
palabra de datos de M bits, y el código tiene una longitud de k bits, el tamaño
real de la palabra almacenada es de M + k bits.

Cuando se va a leer una palabra previamente almacenada, se utiliza el código


para detectar errores, se genera un nuevo código de k bits a partir de los M bits
de datos, que se comparara con los bits de código captados de memoria. De
esta comparación se obtiene uno de los tres resultados posibles:

• No se detectan errores. Los bits de datos se envían al exterior.


• Se detecta un error y es posible corregirlo. Se dan a un corrector los bits
de datos más los bits de corrección de error, lo que produce el conjunto
reducido de M bits a ser enviados fuera.
34

• Se detecta un error, pero no es posible corregirlo. Se envía una señal de


error.

Ejercicios propuestos

1.- Describa cómo se realiza la selección de la dirección requerida en el arreglo de


memoria presentado en la figura 2.2, para el caso en que la memoria sea del
tipo RAM.
2.- ¿Cuántos dispositivos de memoria de 4 K x 1 se requieren para proporcionar un
complemento total de memoria para un procesador de 8 bits con 16 líneas de
dirección? Represente gráficamente la conexión adecuada de la memoria al
microprocesador.

Consulta en otros libros

[Sayers 1995] Incluye información sobre arreglos de memoria para un


microprocesador.

[Satallings 2000] Proporciona un tratamiento amplio sobre las memorias


semiconductoras, incluyendo la interfaz RAMLink, la cual se centra en la
interfaz procesador/memoria, en lugar de en la arquitectura interna de los chips
DRAM.

[Lameda 1984] presenta variados ejemlos sobre el diseño de los sistemas de


memoria.

 Consulta en la Web

http://ortihuela.galeon.com/ram.htm: Incluye información sobre los diversos tipos de


memoria RAM.

http://es.wikipedia.org/wiki/Memoria_RAM: Presenta información relevante sobre los


tipos de memoria RAM y sus aplicaciones.

Ejercicios de Autoevaluación

1.- Configure la memoria de un sistema con una longitud de palabra de 16 bits. La


cantidad de memoria RAM requerida es de 1 K empezando en la posición
000000 H. Y una cantidad de memoria ROM (EPROM) de 4K empezando en la
35

posición 30F000 H. Para ello se dispone de circuitos EPROM de 2K x 8 y


circuitos RAM de 256 x 8. Presente también la tabla de decodificación necesaria.
2.- Se pide diseñar un sistema de microprocesador que pueda direccionar 64 K
localizaciones de memoria. La memoria deberá estar conformada por 4 K x 8 de
EPROM y 4 K x 8 de RAM. El microprocesador a utilizar dispone de 16 líneas de
dirección, y las señal de control R/W (cuando se desea leer un dato de memoria
se activa la señal R mediante un 1 lógico, por el contrario si se desea escribir en
la memoria RAM la señal W deberá tomar el valor de 0 lógico). A continuación
se presenta el microprocesador y los dispositivos de memoria a utilizar:
A15
A14
. Líneas de dirección
.
Microprocesador A0

_
D0 a D7 R/W
Canal de control
Canal de datos

A0 A1 A11
A0 A1 A11 __
___ CS
__ CSR ___
CS CSE
EPROM
RAM 4kX8
4kX8
_
__ D0 a D7 R/W
D0 a D7 OE

En base al planteamiento dado anteriormente presenta la conexión adecuada de


los dispositivos de memoria al microprocesador para lograr la configuración
deseada.

Respuesta a los Ejercicios de Autoevaluación

1.- Como las direcciones contienen tres bytes, se requieren 24 líneas de dirección
(desde A0 hasta A24). La cantidad de dispositivos RAM a utilizar es de 4 (ya que
36

4 x 256 bytes = 1024 bytes = 1k) y dos dispositivos EPROM. El sistema de


memoria así configurado será el siguiente:
000000 H
RAM1 RAM2
000200 H
RAM3 RAM4
0003FF H

VACIO

NO USADO

30F000 H

EPROM1 EPROM2

30FFFF H
VACIO NO USADO

FFFFFF H

Y la tabla de decodificación será la siguiente:

A2 A2 A2 A2 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A A A A A A A A A A
3 2 1 0 9 6 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X X X 0 RAM1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X X X 1 RAM2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 X X X X X X X X 0 RAM3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 X X X X X X X X 1 RAM4
EPRO
0 0 1 1 0 0 0 0 1 1 1 1 X X X X X X X X X X X 0 M1
0 0 1 1 0 0 0 0 1 1 1 1 X X X X X X X X X X X 1 EPRO
M2

2.- Para direccionar la memoria sólo se requieren utilizar 12 líneas de dirección


(212 = 4 K) y para evitar que los dispositivos RAM y ROM coloquen información
en el canal de datos, cuando las señales CSE y CSR toman el valor de cero
lógico, es necesario distinguir entre las dos memorias mediante estas señales.
Por medio de las líneas de dirección no usadas A12 a A15 se puede determinar el
estado de las líneas de selección de los chips. Debe obtenerse una relación
entre las líneas de dirección restantes de modo que ambas líneas de selección
de chip jamás estén bajas al mismo tiempo. Esto se logra mediante la
decodificación de direcciones. La decodificación se puede obtener de acuerdo a
lo siguiente:
37

___ ___
A15 A14 A13 A12 CSE CSR
0 0 0 0 0 1
0 0 0 1 1 0
0 0 1 0 1 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
Usando este esquema, cada localización de memoria física se identifica en
forma singular, a continuación se muestra la conexión adecuada:
Líneas de dirección
A15

A12
A11
A1
Microprocesador A0

_
A0 A1 A11 A0 A1 A11
D0 a D7 R/W __ __
CS CS
___ __
RAM CSR EPROM CSE
4kX8 4kX8

_ __
D0 a D7 R/W D0 a D7 OE
Canal de
control

Canal de datos
38

UNIDAD 3

Interfaz de E/S Básica, Interrupciones y E/S Controlada por DMA

Por muy poderosa que sea una unidad central de procesamiento (CPU), la utilidad
de una computadora depende esencialmente de sus capacidades de entrada y
salida. Es decir sin ellas, no habría por ejemplo entrada desde el teclado, ni salida
desde la pantalla, ni salida impresa y ni siquiera almacenamiento y recuperación en
disco. Para ello se requiere utilizar rutinas y medios especializados que permitan
procesar la entrada y la salida.

Motivado a esto, se presenta en esta unidad el estudio de los componentes de E/S


y sus interfaces, específicamente con el microprocesador. Posteriormente se
introducen dos técnicas avanzadas de E/S, las interrupciones y acceso directo a
memoria, además de los componentes y las configuraciones que las hacen
posibles.

Objetivo de la Unidad 3: Resolver problemas de atención a los dispositivos de E/S,


haciendo uso de interfases básicas programables y/o por interrupción y/o
controladas por DMA.

Contenido de la Unidad 3: El contenido de la unidad contempla el estudio de los


siguientes temas:

Interfaz básica de E/S.


Interrupciones.
Acceso directo a la memoria.
E/S controlada por DMA.
39

Actividades recomendadas para el estudio del contenido de la unidad 3.

1.- Examine la tabla 3.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 3:

MATERIAL DE CAPITUL
TÍTULO CONTENIDO
REFERENCIA O

Introducción a la interfaz de
E/S.

Decodificación de dirección
de un puerto de E/S.
La interfaz de El texto Los
entrada/salida Microprocesadores 11
básica. Intel, B. B. Brey. La interfaz periférica
programable.

La interfaz programable de
teclado/pantalla tipo 8279.
Procesamiento básico de
interrupciones.

Interrupciones por hardware.

Expansión de la estructura de
interrupciones..
Interrupciones. El texto Los
12
Microprocesadores
Intel, B. B. Brey. Controlador de interrupción
programable 8259A .

Ejemplos de interrupción.

Acceso directo a
Operación básica del DMA y
memoria y E/S El texto Los
el controlador del DMA 8237.
controlada por Microprocesadores 13
DMA. Intel, B. B. Brey. Operación del bus
compartido.

Tabla 3.1
40

a) Ampliación de conocimientos: El contenido Interfaz programable de


comunicaciones 16550, incluido en el capítulo 11 sección 11-6, del texto Los
Microprocesadores Intel, no es objeto de evaluación del curso
Microprocesadores, sin embargo, se recomienda su lectura, ya que ésta es
utilizada para conectarse prácticamente a cualquier tipo de interfaz serial.

Atención: Para el establecimiento de una interfaz se requieren ciertos


conocimientos de electrónica, el texto del curso examina algunos hechos
relacionados con ella, los cuales se recomienda leer, a objeto de obtener una
mejor comprensión del contenido.

2.- Lea los siguientes aspectos teóricos, a través de los cuales reforzará los
conocimientos adquiridos.

Buffer de tres estados (o buffer triestado).

Un dispositivo lógico semiconductor que puede tener tres estados: (1) un estado
lógico 0, (2) un estado lógico 1 y (3) un estado en el que la salida está,
efectivamente, desconectada del resto del circuito y no tiene influencia sobre él.
[Lameda,1984].

Tecnología TTL

Acrónimo en Inglés de Transistor-Transistor Logic o "Lógica Transistor a


Transistor". Tecnología de construcción de circuitos electrónicos digitales, en los
que los elementos de entrada de la red lógica son transistores, así como los
elementos de salida del dispositivo.
Las características de la tecnología utilizada, en la familia TTL, condiciona los
parámetros que se describen en sus hojas de características según el fabricante:
Su tensión de alimentación característica se halla comprendida entre los 4.75 V
y los 5.25 V como se ve un rango muy estrecho debido a esto, los niveles
lógicos vienen definidos por el rango de tensión comprendida entre 0.2 V y 0.8 V
para el estado L (bajo) y los 2.4 V y Vcc para el estado H (alto).
La velocidad de transmisión entre los estados lógicos es su mejor baza,
ciertamente esta característica le hacer aumentar su consumo siendo su mayor
enemigo. Motivo por el cual han aparecido diferentes versiones de TTL como
FAST, LS, S, etc y últimamente los TTL: HC, HCT y HCTLS. En algunos casos
puede alcanzar poco más de los 250 Mhz.
[http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_TTL].

Nota: Vcc es el nivel de 5 V (voltios).


41

LED (siglas en inglés de Diodo Emisor de Luz).

Semiconductor especial que emite luz, cuando lo recorre una corriente eléctrica.
[Sayers 1995].

Interfaces con el microprocesador.

La mayoría de los microprocesadores tiene poco valor funcional por si mismos.


Muchos no contienen una memoria sustancial, y pocos tienen puertos de
entrada y salida que los conecten directamente a dispositivos periféricos. Los
microprocesadores operan como parte de un sistema. La interconexión, o
enlace, de las partes en este sistema se denomina interfaz. [Tokheim, 1995].

E/S asignada a memoria y E/S aislada.

Cuando el procesador, la memoria principal y la E/S comparten un bus común,


son posibles dos modos de direccionamiento: asignado en memoria (memory-
mapped) y aislado. Con las E/S asignadas a memoria, existe un único espacio
de direcciones para las posiciones de memoria y los dispositivos de E/S. La CPU
considera los registros de estado y de datos de los módulos de E/S como
posiciones de memoria, y utiliza las mismas instrucciones máquina para acceder
tanto a la memoria como a los dispositivos de E/S. Así por ejemplo, con 10
líneas de dirección se puede acceder a un total de 1024 posiciones de memoria
y direcciones de E/S, en cualquier combinación.

Con la E/S asignadas en memoria, se necesita una sola línea de lectura y una
sola línea de escritura en el bus. Alternativamente, el bus puede disponer de
líneas de lectura y escritura en memoria junto con líneas para órdenes de
entrada y salida. En este caso, las líneas de órdenes especifican si la dirección
se refiere a una posición de memoria o a un dispositivo de E/S. El rango
completo de direcciones está disponible para ambos. De nuevo, con 10 líneas
de dirección, el sistema puede soportar ahora 1024 posiciones de memoria y
1024 direcciones de E/S. Puesto que el espacio de direcciones de E/S está
aislado del de memoria, éste se conoce con el nombre de E/S aislada. [Stallings,
2000].

Protocolo con respuesta (Handshaking)

Un típico sistema de comunicación en paralelo puede ser de una dirección


(unidireccional) o de dos direcciones (bidireccional). El más simple mecanismo
utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que
analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora
y la parte receptora. La parte transmisora coloca la información en las líneas de
datos e informa a la parte receptora que la información (los datos) están
disponibles; entonces la parte receptora lee la información en las líneas de datos
e informa a la parte transmisora que ha tomado la información (los datos).
Observe que ambas partes sincronizan su respectivo acceso a las líneas de
42

datos, la parte receptora no leerá las líneas de datos hasta que la parte
transmisora se lo indique en tanto que la parte transmisora no colocará nueva
información en las líneas de datos hasta que la parte receptora remueva la
información y le indique a la parte transmisora que ya ha tomado los datos, a
ésta coordinación de operaciones se le llama acuerdo ó entendimiento. Bien, en
éstos ámbitos tecnológicos es recomendable utilizar ciertas palabras en inglés
que nos permiten irónicamente un mejor entendimiento de los conceptos
tratados. Repito: a la coordinación de operaciones entre la parte transmisora y la
parte receptora se le llama handshaking, que en español es el acto con el cual
dos partes manifiestan estar de acuerdo, es decir, se dan un apretón de manos.
El handshaking
Para implementar el handshaking se requieren dos líneas adicionales. La línea
de estroboscopio (en inglés strobe) es la que utiliza la parte transmisora para
indicarle a la parte receptora la disponibilidad de información. La línea de
admisión (acknowledge) es la que utiliza la parte receptora para indicarle a la
parte transmisora que ha tomado la información (los datos) y que está lista para
recibir más datos. El puerto paralelo provee de una tercera línea de handshaking
llamada en inglés busy (ocupado), ésta la puede utilizar la parte receptora para
indicarle a la parte transmisora que está ocupada y por lo tanto la parte
transmisora no debe intentar colocar nueva información en las líneas de datos.
Una típica sesión de transmisión de datos se parece a lo siguiente:

Parte transmisora:
ƒ La parte transmisora chequea la línea busy para ver si la parte receptora está
ocupada. Si la línea busy está activa, la parte transmisora espera en un bucle
hasta que la línea busy esté inactiva.
ƒ La parte transmisora coloca la información en las líneas de datos.
ƒ La parte transmisora activa la línea de strobe.
ƒ La parte transmisora espera en un bucle hasta que la línea acknowledge está
activa.
ƒ La parte transmisora inactiva la línea de strobe.
ƒ La parte transmisora espera en un bucle hasta que la línea acknowledge esté
inactiva.
ƒ La parte transmisora repite los pasos anteriores por cada byte a ser
transmitido.
Parte receptora:
ƒ La parte receptora inactiva la línea busy (asumiendo que está lista para
recibir información).
ƒ La parte receptora espera en un bucle hasta que la línea strobe esté activa.
ƒ La parte receptora lee la información de las líneas de datos (y si es
necesario, procesa los datos).
ƒ La parte receptora activa la línea acknowledge.
o La parte receptora espera en un bucle hasta que esté inactiva la línea
de strobe.
ƒ La parte receptora inactiva la línea acknowledge.
ƒ La parte receptora repite los pasos anteriores por cada byte que debe recibir.
43

Se debe ser muy cuidadoso al seguir éstos pasos, tanto la parte transmisora
como la receptora coordinan sus acciones de tal manera que la parte
transmisora no intentará colocar varios bytes en las líneas de datos, en tanto
que la parte receptora no debe leer más datos que los que le envíe la parte
transmisora, un byte a la vez.
[http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm].

CHIP

Pequeña placa o pastilla de material semiconductor usado para producir un


circuito integrado. [Lameda, 1984].

Tipos de interfaces

La interfaz entre el periférico y el módulo de E/S debe ajustarse a la naturaleza y


la forma de funcionar del periférico. Una de las principales características de la
interfaz es si es serie o paralela. En una interfaz paralela, hay varias líneas que
conectan el módulo de E/S y el periférico, y se transfieren varios bits
simultáneamente a través del bus de datos. En una interfaz serie, hay sólo una
línea para transmitir los datos, y los bits deben transmitirse uno a uno . Las
interfaces paralelas se utilizan usualmente para los dispositivos de alta
velocidad, como una cinta o disco. Las interfaces serie son más propias de
impresoras y terminales. [Stallings, 2000].

Técnica de E/S mediante interrupciones.

Es aquella en la que el programa genera una orden de E/S y después continúa


ejecutándose hasta que el hardware de E/S interrumpe para indicar que la
operación de E/S ha concluido. [Stallings, 2000].

Líneas de interrupción del microprocesador Intel 80386.

El microprocesador 80386 de Intel posee una línea de petición de interrupción


(INTR, Interrup request) y una sola línea de reconocimiento de interrupción
(INTA, Interrup Acknowledge). [Stallings, 2000].

Funcionamiento del DMA.

El DMA requiere un módulo adicional en el bus del sistema. El módulo DMA (ver
figura 3.1) es capaz de imitar al procesador y, de hecho, es capaz de recibir el
control del sistema cedido por el procesador. Necesita dicho control para
transferir datos a, y desde, memoria a través del bus del sistema. Para hacerlo,
el módulo DMA debe utilizar el bus sólo cuando el procesador no lo necesita, o
debe forzar al procesador a que suspenda temporalmente su funcionamiento.
Ésta última técnica es la más común y se denomina robo de ciclo (cycle
stealing), puesto que, en efecto, el módulo DMA roba un ciclo de bus.
44

Contador de
datos

Registro de
Líneas de
datos
datos

Registro de
Líneas de dirección
direcciones
DMA REQ

DMA ACK
Lógica de
INTR control

Read

Write

Figura 3.1. Diagrama típico de un módulo de DMA.

Cuando el procesador desea leer o escribir un bloque de datos, envía a una


orden al módulo de DMA, incluyendo la siguiente información:
ƒ Si se solicita una lectura o una escritura, utilizando la línea de control de
lectura o escritura entre el procesador y el módulo DMA.
ƒ La dirección del dispositivo de E/S en cuestión, indicada a través de la línea
de datos.
ƒ La posición inicial de memoria a partir de donde se lee o se escribe,
indicada a través de las líneas de datos y almacenada por un módulo de
DMA en su registro de direcciones.

El número de palabras a leer o escribir, también indicando a través de las líneas de


datos y almacenado en el registro de cuenta datos. Después el procesador continúa
con otro trabajo. Ha delegado la operación de E/S al módulo de DMA, que se
encargará de ella El módulo de DMA, transfiere el bloque completo de datos palabra
a palabra, directamente desde, o hacia, la memoria, sin que tenga que pasar a
través del procesador. Cuando la transferencia se ha terminado, el módulo de DMA
envía una señal de interrupción al procesador. Así pues, el procesador sólo
interviene al comienzo y al final de la transferencia (ver figura 3.2). [Stallings, 2000].
45

CPU DMA
Mandar orden de
lectura de bloque Hacer otra cosa
al módulo DMA

Leer el estado del


módulo DMA
DMA CPU

Figura 3.2. Acceso directo a memoria

3.- Estudie el ejemplo 3.1, en cual presenta la descripción y funcionamiento de la


interfaz programable de periféricos (IPP) Intel 82C55A.

Ejemplo 3.1: Descripción y funcionamiento de la interfaz de periférico


programable 82C55A Intel.

Este tipo de interfaz se utiliza para la E/S programada y para la E/S mediante
interrupciones. El 82C55A es un módulo de E/S de propósito general integrado en
un solo chip y diseñado para ser usado con el procesador Intel 8086.
[Stallings,2000]. La figura 3.3 muestra el diagrama general de bloques de la IPP
82C55A de Intel.
46

Buffer de Bus interno


datos de 8 bits

Bus de 8 8 8
datos A
del 8086

Fuente + 5 V (Vdd) 4
de
alimentación Tierra (GND) CA
4
A0 CB

A1 Lógica
de
Read control
Write 8
Registro B
Reset de
control
Chip
select
Buffer de
datos

Figura 3.3 Diagrama de bloques de la IPP 82C55A de Intel.

Las 24 líneas de E/S son programables por el 8086 mediante un registro de control.
El 8086 puede fijar el valor del registro de control para especificar los diversos
modos de operación y configuraciones. Las 24 líneas se dividen en tres grupos de 8
bits (A, B, C). Cada grupo puede funcionar como un puerto de E/S de 8 bits.
Además, el grupo C se subdivide en grupos de 4 bits (CA y CB), que pueden usarse
conjuntamente con los puertos de E/S de A y B.
El diagrama de la figura 3.3 es la interfaz interna con el bus del 8086. Ésta incluye
un bus de datos bidireccional de 8 bits (D0 a D7), usado para transferir datos a y
desde, los puertos de E/S, y para transferir la información al registro de control. Las
dos líneas de direcciones (A0 y A1) especifican uno de los dos puertos de E/S o el
registro de control. Una transferencia se producirá cuando la línea de selección de
47

chip (CHIP SELECT) se activa junto con la línea de lectura (READ) o escritura
(WRITE). La línea RESET se utiliza para iniciar el módulo.

El procesador escribe en el registro de control para seleccionar el modo de


operación y para definir las señales, en su caso. En el modo 0 de operación, los tres
grupos de 8 líneas externan funcionan como tres puertos de E/S de 8 bits. Cada
puerto puede ser designado como de entrada o de salida. En caso contrario, los
grupos A y B funcionan como puertos de E/S, y las líneas del grupo C sirven de
líneas de control para A y B. Las líneas de control tiene dos funciones principales: la
sincronización mediante conformidad de señales (handshaking) y la petición de
interrupciones. La conformidad de un mecanismo sencillo de temporización. El
emisor utiliza una línea de control como línea de datos listos (DATA READY) para
indicar que hay un dato en las líneas de datos de E/S. El receptor utiliza otra línea
como reconocimiento (ACKNOLEDGE), para indicar que el dato se ha leído y que
las líneas de datos se pueden liberar. Se puede seginar otra línea como línea de
petición de interrupción (INTERRUPT REQUEST) en el bus del sistema.

4.- En el ejemplo 3.2, se presenta una aplicación de la interfaz 82C55A, para


controlar un terminal con teclado y pantalla.

Ejemplo 3.2: Uso de la interfaz 82C55A para controlar la conexión de un


teclado y una pantalla al microprocesador.

En la figura 3.4, se ilustra el uso de la interfaz programable de periféricos Intel


82C55A. El teclado proporciona 8 bits de entrada, dos de estos bits, SHIFT y
CONTROL, tienen un significado especial para el programa de gestión de teclado
que ejecuta el procesador. Sin embargo este significado es transparente para el
82C55A, que simplemente acepta los 8 bits de datos y los pone en el bus de datos
del sistema. Existen dos líneas para la sincronización del teclado mediante
conformidad (handshaking).

La pantalla también está conectada a un puerto de datos de 8 bits. De nuevo, dos


de los bits tiene un significado específico que es transparente para el 82C55A.
Junto a las dos líneas para la sincronización mediante conformidad, hay dos líneas
más para funciones de control adicionales.
48

Petición de
interrupción
C3 A0
A0 R0
A1 R1
A2 R2
A3 R3
A4 R4
A5 R5
A6 Shift (deslazamiento)
Control

C4
C5 Dato preparado
Reconocimiento

82C55A

B0 S0
B1 S1
B2 S2
B3 S3
B4 S4
B5 S5
B6 Backspace
B7 Borrar

C1 Dato preparado
C2 Reconocmiento
C6 Blanking
C0 C7 Borrar línea

Petición de
Interrupción
Figura 3.4 Interfaz teclado/pantalla en el 82C55A

5.- En el ejemplo 3.3 se muestra el uso de la E/S mediante interrupciones, para leer
un bloque de datos desde un dispositivo periférico y almacenarlo en la memoria.

Ejemplo 3.3: E/S con interrupciones para leer un bloque de datos.

En la figura 3.5 se muestra el conjunto de acciones que deben desarrollarse para


procesar una E/S haciendo uso de las interrupciones. El procesador tras enviar una
orden de E/S a un módulo, continúa realizando algún trabajo útil. Después, el
módulo de E/S interrumpirá al procesador para solicitar su servicio cuando esté
preparado para intercambiar datos con él. El procesador ejecuta entonces la
transferencia de datos, y después continúa con el procesamiento previo.
49

Mandar orden de CPU I/O


lectura al módulo de
E/S Hacer otra cosa

Leer el estado del Interrupción


módulo de E/S
E/S CPU

Comprobar Condición de error


el estado

Preparado

Leer una palabra del E/S CPU


módulo de E/S

Escribir una palabra


CPU Memoria
en memoria

No Comprobar
el estado

Si

Instrucción siguiente

Figura 3.5. Entrada de un bloque de datos mediante interrupciones.

6.- En el ejemplo 3.4, se presenta una aplicación del PIC (controlador de


interrupciones programable) 82C59A para conectar varios módulos de E/S con
el microprocesador Intel 80386.
50

Ejemplo 3.4: Uso del PIC 82C59A para gestionar la interrupción de 64


módulos de E/S.

En la figura 3.6 se ilustra el uso del PIC 82C59A para conectar 64 módulos de E/S.
Debido a que un 82C59A sólo puede manejar hasta 8 módulos, es necesario
disponer de un sistema en cascada para controlar los 64 módulos de E/S.

La única responsabilidad del 82C59A es la gestión de interrupciones. Acepta la


solicitud de interrupción de los dispositivos conectados a él, determina qué
interrupción tiene la prioridad más alta, y se lo indica entonces al procesador
activando la señal INTR. El procesador reconoce la solicitud mediante la línea INTA.
Esto hace que el 82C59 sitúe el vector apropiado en el bus de datos. Entonces, el
procesador puede iniciar el procesamiento de la interrupción y comunicarse
directamente con el módulo de E/S para leer o escribir datos.

Si se precisa controlar más de 8 módulos, se puede disponer en cascada para


manejar para conectar
51

Controlador de
interrupciones
82C59A esclavo
Dispositivo externo 00 IR0
Dispositivo externo 01 IR1 INT
IR2
IR3
IR4
IR5
IR6
IR7
Dispositivo externo 07

Controlador de Concentrador de Procesador


interrupciones interrupciones 80386
82C59A esclavo 82C59A maestro
Dispositivo externo 08 IR0 IR0
IR1 INT IR1
Dispositivo externo 09
IR2 IR2 INT INTR
IR3 IR3
IR4 IR4
IR5 IR5
IR6 IR6
IR7 IR7
Dispositivo externo 15

Controlador de
interrupciones
82C59A esclavo
Dispositivo externo 56 IR0
Dispositivo externo 57 IR1 INT
IR2
IR3
IR4
IR5
IR6
IR7
Dispositivo externo 63

Figura 3.6. Uso del controlador de interrupciones 82C59A.


Entrada de un bloque de datos mediante interrupciones.
52

7.- En el ejemplo 3.5, se presenta una aplicación del funcionamiento de un módulo


DMA, para escribir un bloque de 32 bytes de la dirección de memoria 100 en una
terminal (un terminal de computadora consta de dos partes: un teclado y un
monitor).

Ejemplo 3.5: Transferencia de un bloque de 32 bytes desde memoria a un


terminal de computadora, usando la técnica de E/S de DMA.

La E/S controlada por interrupciones es un gran adelanto en comparación con la


E/S programada [TANENBAUM, 2000]. El problema es que se requiere una
interrupción por cada carácter transmitido. El procesamiento de interrupciones es
costoso. Razón por la cual es necesario una forma de reducir la mayor parte de las
interrupciones.
La solución es regresar a la E/S programada, pero encargársela a otro dispositivo
que no sea el CPU. La figura 3.7 muestra como se logra esto. Se ha añadido un
nuevo chip al sistema, un controlador de acceso directo a la memoria (DMA), con
acceso directo al bus.

Dirección

CPU DMA Memoria


100
Cuenta 32 Controlador
RS232C
4 100
1
Dispositivo Sentido

Bus

Figura 3.7. Sistema controlador DMA

El chip DMA contiene al menos cuatro registros, todos los cuales pueden ser
cargados por software que se ejecuta en la CPU. El primero contiene la dirección de
memoria que se leerá o en la que se escribirá. El segundo contiene el número de
bytes (o palabras) que se transferirán. El tercero específica el número de
53

dispositivo o espacio de direcciones de E/S que se usará, con lo que se especifica


qué dispositivo de E/S se desea. El cuarto indica si los datos se escribirán en el
dispositivo de E/S o se leerán de él.

Para escribir un bloque de 32 bytes de la dirección 100 en una terminal (por


ejemplo, el dispositivo 4), la CPU escribe los números 100, 32 y 4 en los primeros
tres registros del DMA, y luego el código de escribir ( por ejemplo, 1) en el cuarto,
como se muestra en la figura 3.7. Una vez inicializado con estos valores, el
controlador DMA emite una solicitud de bus para leer el byte 100 de la memoria,
del mismo modo como la CPU leería de la memoria. Una vez que obtiene el byte, el
controlador de DMA emite una solicitud de E/S al dispositivo 4, para escribir el byte
en él. Una vez completadas ambas operaciones, el controlador de DMA incrementa
en 1 su registro de dirección y decrementa en 1 su registro de cuenta. Si el registro
de cuenta sigue siendo mayor que 0, se lee otro byte de la memoria y se escribe en
el dispositivo.
Cuando la cuenta por fin llega a 0, el controlador de DMA deja de transferir data y
habilita la línea de interrupción en el chip del CPU. Con DMA, la CPU solo tiene que
inicializar unos cuantos registros. Una vez hecho eso, queda libre para hacer otras
cosas hasta que se completa la transferencia,

Ejercicios propuestos

1.- Asuma que un procesador de 16 bits y dos de 8 bits deben conectarse a un bus
del sistema. Considere los siguientes detalles:
• Todos los microprocesadores tiene el hardware necesario para cualquier tipo
de transferencia: E/S programada, E/S mediante interrupciones y DMA.
• Todos los microprocesadores tienen un bus de direcciones de 16 bits.
• Hay dos tarjetas de memoria, de 64 Kbytes cada una, conectada al bus. El
diseñador desea que se comparta la mayor cantidad de memoria posible.
• El bus del sistema permite un máximo de cuatro líneas de interrupción y una
de DMA.
Haga las suposiciones adicionales que necesite, y:

a) Establezca las especificaciones del bus en términos del número de líneas.


b) Explique cómo es la interfaz de los dispositivos indicados arriba para
conectarse al bus.

2.- Una impresora de caracteres simples podría usar razonablemente bien una
entrada/salida programada, pues su velocidad es lenta. Comparada con la
unidad central de procesamiento. Sin embargo, la mayoría de las impresoras
modernas utiliza el acceso directo a la memoria. ¡Por qué?.

3.- ¿Por qué el acceso directo a la memoria (DMA) sería inútil si la computadora
careciera de la capacidad de interrupción?
54

Consulta en otros libros

[Stallings, 2000] Dedica un capítulo a los distintos aspectos de la organización de


E/S, también describe la interfaz entre los módulos de E/S y los dispositivos
externos.

[Tokheim, 1995] Hace una presentación de las interfaces con el microprocesador.

[Tanenbaum, 2000] Cubre algunos aspectos de los temas de esta unidad.

[Lameda, 1984] Presenta un estudio de los métodos para introducir y extraer datos
del computador, también incluye el estudio de las interfaces con dispositivos para
entrada/salida.

[Sayers 1995] Contiene aspectos orientados al estudio de problemas externos de


interfaz de un microprocesador con el mundo real.

Se sugiere consultar también los otros textos recomendados en la bibliografía.

 Consulta en la Web

http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm: Contiene información


sobre el puerto paralelo del PC.

http://www.iuma.ulpgc.es/users/armas/asignaturas/fundamentos/tutorial/entradas_y_
salidas/index.htm: Es un tutorial con información asociada a la E/S del
sistema.

Ejercicios de Autoevaluación

1.- Un dispositivo periférico junto con su controlador de E/S se conectará a un


computador mediante el uso de un controlador DMA. Todos los módulos que
conforman el sistema comparten el mismo bus “master”. El periférico solicita una
transferencia al controlador de DMA, el cual a su vez solicita el bus a la CPU. Si
la CPU no está utilizando el bus ni está en estado LOCK, lo concede al
55

controlador de DMA, el cual a su vez informa al periférico para que prepare los
datos a transferir.

En una transferencia de entrada, los datos se mueven desde el periférico (I/O) a


la memoria por el bus de datos sin pasar por el controlador de DMA y sin
intervención de la CPU. Las líneas de control para leer la I/O (IOR) y para
escribir la memoria (MEMW) son manejadas por el controlador de DMA. De la
misma forma, en una transferencia de salida los datos se mueven desde la
memoria a la I/O y el controlador de DMA maneja las líneas de control para leer
la memoria (MEMR) y para escribir en el periférico (IOW).

Con base a lo anteriormente expuesto, solucione la manera en que debe


configurarse el sistema para el control de la E/S mediante el uso de la técnica
DMA y que cumpla con las especificaciones dadas.

2.- La conexión a periféricos en un sistema de microcomputador puede hacerse


mediante el uso de chips especializados de entradas y salidas. Estos chips
tienen como característica común su programabilidad por software y su conexión
directa a los buses del sistema sin lógica auxiliar.
Parta de la información dada anteriormente y resuelva el problema de la
conexión de la PPI (interfaz periférica programable) tipo 82C55, en un sistema
de microprocesador directamente ligados a los buses.

Respuesta a los Ejercicios de Autoevaluación

1.- En la siguiente figura se presenta una solución que permite el control de la E/S,
mediante el uso de un controlador DMA.
56

Se observa que el sistema configurado, consta de un periférico con su controlador


de E/S, un controlador de DMA y las señales de pedido y concesión del bus que
permiten alternar el "bus master" entre la CPU y el controlador de DMA

2.- La disposición de la PPI 82C55 en este tipo de sistema, se muestra a


continuación:

Bus de datos (8 bits)

8 Bus de direcciones
(16 bits)s)
CS A0 A1

Puerto A 8
D0

D7
82C55

Puerto C
8

A1

A0
__
CS
Puerto B 8
__ __
RD WR RESET

I/OR I/OW RESET Bus de control


57

UNIDAD 4

Interfaz del bus

El PC (Personal Computer), es un sistema de propósito general, que puede ser


ajustado a las necesidades del usuario agregando placas con la electrónica
necesaria, acompañadas de software que permita controlarlas. Un posible
ejemplo es el procesamiento de imágenes de video: basta colocar una tarjeta
adquisidora de video y configurar su software controlador para hacer que una
aplicación de procesamiento de imágenes, ejecutándose en el PC, pueda
procesar las imágenes adquiridas con la placa.

Se pueden colocar en un sistema PC, el tipo de interfaz (tarjeta) que uno


desee, para controlar los más variados dispositivos periféricos gracias a las
Ranuras de Expansión o Slots (Conector). Existen varios tipos de Ranuras de
Expansión, de distintas formas y características. Consisten simplemente en
zócalos que sirven para conectar los bordes de las tarjetas interfaces. El
conjunto de esos zócalos, de un cierto tipo se llama Bus de Sistema. Cada
zócalo se denomina SLOT y da lo mismo, para conectar una tarjeta, un slot que
otro ya que se encuentran conectados en paralelo.

Los computadores poseen distintos tipos de buses que proporcionan


comunicación a distintos niveles dentro de la jerarquía del sistema. El bus que
conecta los componentes principales del computador (procesador, memoria y
E/S) se denomina bus del sistema. Las estructuras de interconexión más
comunes dentro de un computador están basadas en el uso de uno o más
buses.

En la unidad 4, se presenta el estudio de la Arquitectura de los buses, y la


interconexión de los periféricos.

Objetivo de la Unidad 4: Resolver problemas de implementación de interfaces


sencillas que se conecten a los buses ISA extendido y/o VESA Local y/o PCI
y/o USB y/o AGP.

Contenido de la Unidad 4: El contenido de la unidad contempla el estudio de


los siguientes temas:

El bus ISA, Arquitectura de los buses ISA extendido (EISA) y


(VESA) Local.
El bus de interconexión de los componentes periféricos (PCI).
El bus serial universal USB.
Puerto grafico acelerado (AGP).
58

Actividades recomendadas para el estudio del contenido de la unidad 4.

1.- Examine la tabla 4.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 4:

MATERIAL DE
TÍTULO CONTENIDO CAPITULO
REFERENCIA

El bus ISA

Arquitectura de los buses


ISA extendido (EISA) y
VESA Local.

El texto Los El bus de Interconexión de


Interfaz del bus. Microprocesadores componentes periféricos 15
Intel, B. B. Brey. (PCI)

El bus serial Universal


(USB)

Puerto gráfico acelerado


(AGP)

Tabla 4.1

1.- Lea los siguientes aspectos teóricos a través de los cuales reforzará los
conocimientos adquiridos:

SLOT

Ranura de la motherboard que permite expandir la capacidad de una


computadora insertándole placas.
http://www.sitiosargentina.com.ar/Help/diccionario%20tecnico.htm#s

MOTHERBOARD

Placa que contiene los circuitos impresos básicos de la computadora, la CPU,


la memoria RAM y slots en los que se puede insertar otras placas (de red, de
audio, etc.).
http://www.sitiosargentina.com.ar/Help/diccionario%20tecnico.htm#s

La interfaz PCI

PCI ("Peripheral Component Interconnect") es básicamente una especificación


para la interconexión de componentes en ordenadores. Ha dado lugar a un
59

bus PCI, denominado también Mezzanine, en español entresuelo [1], porque


funciona como una especie de nivel añadido al bus ISA/EISA tradicional de la
placa-base. Es un bus de 32 bits que funciona a 5 V, 33 MHz, con una
velocidad de transferencia inicial de 133 Mb/s (Megabits por segundo).
Aunque seguiremos llamándolo "bus PCI", en realidad no es un bus local; por
contra, ocupa un lugar intermedio (de ahí el nombre mezzanine) entre el bus
del procesador / memoria / cache y el bus estándar ISA. El bus PCI se
encuentra separado del bus local mediante un controlador que hace de
pasarela. Cuando la UCP escribe datos en los periféricos PCI (por ejemplo un
disco duro), el controlador/pasarela PCI los almacena en su buffer. Esto
permite que la UCP atienda la próxima operación en vez de tener que esperar
a que se complete la transacción. A continuación el buffer envía los datos al
periférico de la forma más eficiente posible.
http://www.zator.com/Hardware/H6_4.htm

Comparación de los tipos de bus


ISA EISA VESA PCI
Bus de datos 8/16 32 32/64 32/64
Velocidad del bus de datos (MHz) 5.33/8.33 8.33 33/50 33
Velocidad de transferencia (MB/s) 5.33/8.33 33 132/264 132/264
Velocidades de transferencia 5.33/8.33 33 132 132
implementadas (MB/s)
Número de Slots 0-8 0-8 0-2 0-4
Soporte de Bus Master No Si Si Si
Paridad para direcciones y datos No No No Si
Sync, Channel Checks No No No Si
Identificación de dispositivo & Auto No Si Si Si
configuración
Trabaja con ISA/EISA N/A N/A Si
http://www.zator.com/Hardware/H6_4.htm

AGP

El AGP (Accelerated Graphics Port, Puerto de Gráficos Acelerados) es una


especificación de bus que permite que se desplieguen rápidamente gráficos en
3-D en computadoras personales comunes. El AGP es una interfaz especial
diseñada para transmitir imágenes en 3-D (por ejemplo, de páginas Web o CD-
ROMs) mucho más veloz y ágilmente de lo que es posible hoy en una
ordenador que no sea una costosa estación de trabajo gráfica. La interfaz usa
el almacenamiento principal del ordenador (RAM) para refrescar la imagen del
monitor y soportar el mapeo de texturas, el z-buffering y la mezcla alfa que se
requieren para el despliegue de imágenes en 3-D. El uso que hace el AGP de
la memoria principal es dinámico, lo cual significa que cuando no se está
utilizando para gráficos acelerados, la memoria principal se devuelve para uso
del sistema operativo u otras aplicaciones.

http://www.gamarod.com.ar/recursos/glosario/
60

3.- El ejemplo 4.1 muestra la forma usual de utilizar el bus PCI en un sistema
uniprocesador.

Ejemplo 4.1: Uso de un bus PCI en un sistema uniprocesador

En la figura 4.1 se muestra una configuración usual del bus PCI. En esta
configuración un dispositivo que integra el controlador DRAM y el adaptador
al bus PCI proporciona el acoplamiento al procesador y la posibilidad de
generar datos a velocidades elevadas. El adaptador actúa como un registro
de acople (buffer) de datos, puesto que la velocidad del bus PCI puede
diferir de la capacidad de E/S del procesador.

Procesador
Monitor
Cache

Adaptador/con -
trolador de
DRAM Audio Imágenes
memoria
en
movimiento

Bus PCI

Gráficos

Adaptador
Dispositivos
del bus de
expansión de E/S
básicos
CS Graficador

Bus de expansión

Figura 4.1 Bus PCI en un sistema uniprocesador

5.- El ejemplo 4.2 presenta el uso de una interfaz de bus ISA que se decodifica
en las direcciones 800H y 803H.

Ejemplo 4.2: Interfaz de bus ISA que contiene un 82C55 accedido por
medio de direcciones de puertos.

2.- La figura 5.2 muestra una interfaz ISA decodificada en las direcciones 800H
a 803H:
61

SD0 34 4
D0 PA0
SD1 33 3
D1 PA1
SD2 32 2
D2 PA2
SD3 31 1
D3 PA3
SD4 30 40
D4 PA4
SD5 29 39
D5 PA5
SD6 28 38
D6 PA6
SD7 27 37
D7 PA7
___
IOR 5 __ 18
___ RD PB0
IOW 36 19
__
WR PB1
SA0 9 20
A0 PB2
SA1 8 21

RESET 35 A1 PB3 22

6 RESET PB4 23
__
CS PB5 24
PB6 25
SA2 1 19
I1 O1 PB7
SA3 2 18
I2 O2 14
SA4 3 17 PC0
I3 O3 15
SA5 4 16 PC1
I4 O4 16
SA6 5 15 PC2
I5 O5 17
SA7 6 14 PC3
I6 O6 13
SA8 7 13 PC4
I7 O7 12
SA9 8 12 PC5
I8 O8 11
SA10 9 PC6
I9 10
SA11 11 PC7
I10
82C55
16L8

SA12

SA13

SA14

SA15

Figura 4.2 Interfaz de bus ISA decodificada en las direcciones 800H a 803H
62

Ejercicios propuestos

1.- Explique mediante el uso de un diagrama de tiempos, cómo se realiza la


operación de escritura en un bus PCI.

2.- Desarrolle una interfaz del bus ISA, similar a la del ejemplo 4.2, pero que
sea decodificada en las direcciones 0820H a 0823H.

Consulta en otros libros

[Stallings 2000] incluye en su contenido la interconexión con buses,


específicamente la descripción del bus PCI.

[Hamacher, 2003]. Contiene el estudio de los buses PCI y USB.

 Consulta en la Web

http://www.des.udc.es/~emilioj/ECm2/ecm2_p2_t2-doc.pdf: Presenta de una


manera sencilla la interconexión con buses, toma como ejemplos los buses
PCI y USB.

http://www.die.upm.es/cursos/BUSES1.pdf: Incluye información interesante


sobre la evolución de los buses.

http://www.redeweb.com/microbit/articulos/7107125.pdf: Expone aspectos


relacionados con las aplicaciones del bus PCI.

http://www.terra.es/personal/zyryab/buspci.htm: Es un documento que incluye


el diseño de una interfaz PCI para una aplicación.

Ejercicios de Autoevaluación

Como ejercicios de autoevaluación, se recomienda revisar los problemas


resueltos número 6 y 8, incluidos en el capítulo 15 del texto Los
Microprocesadores Intel, de Barry B Brey.
63

MÓDULO II

FAMILIA DE MICROPROCESADORES, EL COPROCESADOR


ARITMÉTICO Y LA TECNOLOGÍA MMX
En este módulo se incluyen dos unidades que permiten complementar el
estudio de los microprocesadores. En la unidad 5 se presenta la evolución de
una familia comercial de microprocesadores, en la búsqueda de mejores
prestaciones. Como consecuencia de esta evolución, se han incorporado
nuevos elementos y tecnologías que amplían su panorama de uso, tales como
el coprocesador aritmético y la tecnología MMX, los cuales son tema de
estudio de la unidad 6.

Objetivo del Módulo II: Analizar con sentido lógico y creativo, la evolución de
una familia de microprocesadores y programas que resuelvan problemas
aritméticos.

El módulo II está estructurado en dos unidades:

Unidad 5: Familia de microprocesadores.


Unidad 6: El Coprocesador Aritmético y la Tecnología MMX
64

UNIDAD 5

Familia de Microprocesadores
La historia de los microprocesadores (procesadores) ha pasado por diferentes
situaciones, siguiendo la lógica evolución de este mundo. Desde aquel primer
procesador 4004 del año 1971 hasta el Itanium producido en el 2001. Según la
opinión de expertos, para el año 2011 se utilizará procesadores cuyo reloj irá a
una velocidad de 10 GHz (10.000 MHz), contendrá mil millones de transistores
y será capaz de procesar cerca de 100 mil millones de instrucciones por
segundo.

El factor responsable del gran aumento de la velocidad del microprocesador es


la disminución del tamaño de los componentes del microprocesador; esto
reduce la distancia entre componentes, y, por tanto, aumenta la velocidad. Sin
embargo, la verdadera ganancia en velocidad en los últimos años se debe a la
organización del microprocesador, incluyendo el uso de técnicas para obtener
mejores prestaciones de servicio.

La unidad 5, presenta la evolución de la Familia de Microprocesadores Intel,


profundizando en las mejoras de hardware y software que han desarrollado los
diseñadores sobre los miembros de esta familia en la búsqueda de un mejor
desempeño. Mediante el conocimiento obtenido, se podrá describir importantes
conceptos de diseño que han conducido al desarrollo de computadores más
potentes.

Objetivo de la Unidad 5: Analizar la evolución de la arquitectura y/o


funcionamiento de microprocesadores comerciales, para la descripción de
mejoras en sus prestaciones de servicio.

Contenido de la Unidad 5: El contenido de la unidad contempla el estudio de


los siguientes temas:

Los microprocesadores 80186, 80188 y 80286.


Los microprocesadores 80386 y 80486.
Los microprocesadores Pentium y Pentium Pro.
El microprocesador Pentium II
65

Actividades recomendadas para el estudio del contenido de la unidad 5.


1.- Examine la tabla 5.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 5:

MATERIAL DE
TÍTULO CONTENIDO CAPITULO
REFERENCIA
Arquitectura de los
80186 / 80188.
Programación de las
Los mejoras de los 80186 /
microprocesadores El texto Los 80188.
80186, 80188 y 80286. Microprocesadores 16
Intel, B. B. Brey. Ejemplo de interfaz con el
80C188EB.

Introducción al 80286.
Introducción al
microprocesador 80386.
Registros especiales del
80386
Administración de la
memoria del 80386.
Los Acceso al modo protegido
microprocesadores El texto Los
17
80386 y 80486. Microprocesadores Modo 8086 virtual.
Intel, B. B. Brey.
Modo 8086 virtual.

Mecanismo de paginación
de memoria.

Introducción al procesador
80486.
Introducción al procesador
Pentium. Registros
especiales del Pentium.
Los Administración de la
microprocesadores El texto Los memoria del Pentium.
Pentium y Pentium Microprocesadores Nuevas instrucciones del 18
Pro. Intel, B. B. Brey. Pentium.
Introducción al
microprocesador Pentium
Pro. Características
especiales del Pentium
Pro.

Tabla 5.1
66

MATERIAL DE
TÍTULO CONTENIDO CAPITULO
REFERENCIA

Introducción al
El microprocesador El texto Los microprocesador
Pentium II. Microprocesadores Pentium II. 19
Intel, B. B. Brey. Cambios al software del
Pentium II.

Tabla 5.1 Continuación

2.- Una vez leído el contendido indicado en la tabla 5.1, usted estará en
capacidad de responder lo siguiente:

2.1 ¿Cuál fue el primer microprocesador Intel de 32 bits?

2.2 ¿Cuántos períodos del reloj encontramos en un ciclo de bus de los


80186/80188?

2.3 ¿Cuántos bytes de memoria virtual direcciona la unidad de


administración de memoria del microprocesador 80386?

2.4 Describa brevemente cómo funciona el sistema de memoria cache.

2.5 ¿A cuánta memoria puede acceder el microprocesador Pentium?

2.6 ¿Cuántas caches encontramos en el Pentium y cuáles son sus


tamaños?

2.7 ¿Cuál es la diferencia entre la cache de nivel 2 en el Pentium Pro y la


del Pentium II?
67

3.- Estudie la tabla 5.2 mostrada a continuación, la cual resume las


especificaciones técnicas de los microprocesadores Intel:

Fecha de Velocidad Ancho Número de Memoria Memoria Breve


presentación de reloj de bus transistores direccionable virtual descripción
Primer chip con
2.300 (10
4004 15/11/71 108 KHz. 4 bits 640 byte manipulación
micras)
aritmética
Manipulación
8008 1/4/72 108 KHz. 8 bits 3.500 16 KBytes
Datos/texto
10 veces las (6
micras)
8080 1/4/74 2 MHz. 8 bits 6.000 64 KBytes
prestaciones del
8008
5 MHz.
29.000 10 veces las
8086 8/6/78 8 MHz. 16 bits 1 MegaByte prestaciones del
(3 micras) 8080
10 MHz.
5 MHz. Idéntico al 8086
excepto en su
8088 1/6/79 8 bits 29.000
bus externo de
8 MHz. 8 bits
8 MHz.
134.000 De 3 a 6 veces
1
80286 1/2/82 10 MHz. 16 Bits 16 Megabytes las prestaciones
Gigabyte
(1.5 micras) del 8086
12 MHz.
16 MHz.

Primer chip x86


Microprocesador 20 MHz. 275.000 capaz de
64
17/10/85 32 Bits 4 Gigabytes manejar juegos
Terabytes
Intel 386 DX® 25 MHz. (1 micra) de datos de 32
bits

33 MHz.
Bus capaz de
Microprocesador 16 MHz. 275.000 64 direccionar 16
16/6/88 16 Bits 4 gigabytes bits procesando
Intel 386 SX® 20 MHz. (1 micra) Terabytes 32bits a bajo
coste
25 MHz.
Microprocesador (1 micra, 0.8 64
Cache de nivel
10/4/89 33 MHz. 32 Bits micras en 50 4 Gigabytes
1 en el chip
Intel 486 DX® MHz.) Terabytes
50 MHz.

16 MHz.

Idéntico en
Microprocesador 20 MHz. 1.185.000 64 diseño al Intel
22/4/91 32 Bits 4 Gigabytes 486DX, pero sin
Intel 486 SX® 25 MHz. (0.8 micras) Terabytes coprocesador
matemático

33 MHz.
68

Fecha de Velocidad Ancho Número de Memoria Memoria Breve


presentación de reloj de bus transistores direccionable virtual descripción

60 MHz.

66 MHz.

75 MHz.

90 MHz.
Arquitectura
Procesador 100 MHz. 3,1 millones 64 escalable.
Hasta 5 veces
22/3/93 32 Bits 4 Gigabytes
las prestaciones
Pentium® 120 MHz. (0.8 micras) Terabytes del 486 DX a 33
MHz.
133 MHz.

150 MHz.

166 MHz.

200 MHz.
150 MHz. Arquitectura de
Procesador 5,5 millones 64 ejecución
dinámica con
27/3/95 180 MHz. 64 Bits 4 Gigabytes
procesador de
PentiumPro® (0.32 micras) Terabytes altas
200 MHz. prestaciones
233 MHz.
S.E.C., MMX,
Procesador 7,5 millones 64 Doble Bus
7/5/97 266 MHz. 64 Bits 4 Gigabytes Indep.,
PentiumII® (0.32 micras) Terabytes Ejecución
Dinámica
300 MHz.

Tabla 5.2. Especificaciones técnicas de los microprocesadores Intel


Fuente: http://www.duiops.net/hardware/micros/microshis.htm

4.- En el siguiente ejemplo se muestra el número de caches que se utilizan en


los microprocesadores:

Ejemplo 5.1: Número de caches en los microprocesadores.

Cuando se introdujeron originalmente las caches, un sistema tenía


normalmente solo una cache. Más recientemente, se ha convertido en una
norma el uso de múltiples caches.

El uso de de las memorias caches en los sistemas microprocesadores mejora


la velocidad de proceso y sus prestaciones. Habitualmente se dimensionan
caches de uno o dos niveles, aunque también hay sistemas con tres niveles.

Los modernos microprocesadores tienen:

• Caches on-chip (cache de nivel 1, L1): Proporcionan las mejores


prestaciones.
69

• Cache off-chip módulo externo (constituye el nivel 2, L2): Tiene tiempos


de acceso memores que la memoria principal. Las caches L2. Suelen
ser de 512 KBytes o menos. Caches de mayores tamaños no son
rentables.

5.- En el ejemplo 5.2, se muestra el número de caches presentes en los


microprocesadores de la familia Intel.

Ejemplo 5.2: Número de caches en los microprocesadores de la familia


Intel.

• 80386: Sin cache on-chip


• 80486: 8 KBytes de cache unificada. Lineas (bloques) de 16 bytes y
organización asociativa en cuatro vías.
• Pentium (todas las versiones): Dos caches L1 on-chip. Cache partida
de 16 KBytes, 8KBytes para datos y 8 KBytes para instrucciones.
• Pentium III: Se añade una cache L3 en la tarjeta (off-chip).
• Pentium 4:
- Caches L1 de 8 KBytes, líneas (bloques) de 64 bytes, asociativa
de 4 vías.
- Caches L2: Unificada. Alimenta a las dos cache L1.
- 256 KBytes, líneas de 128 bytes, asociativa de 8 vías.
- Cache L3 on-chip.

Atención: Los microprocesadores Pentium III y Pentium 4, no son objeto


de estudio del curso Microprocesadores.
.

6.- El ejemplo 5.3, presenta la evolución de la estructura de la cache, en la


evolución de los microprocesadores de Intel.

Ejemplo 5.3: Evolución de la estructura cache en los microprocesadores


Intel.

La evolución de la estructura cache se observa claramente en la evolución de


los microprocesadores Intel. El 80386 no tiene cache on-chip. El 80486 incluye
una sola cache on-chip de 8 KBytes, utilizando un tamaño de línea de 16 bytes
y una organización asociativa por conjunto (la memoria cache se divide en
conjuntos de n bloques, así al bloque i-ésimo de memoria principal le
corresponde el conjunto i módulo (k/n) donde k es el número de bloques de
memoria cache) de cuatro vías. En la figura 5.1, se presenta el diagrama de
bloques del 80486, en el cual se aprecia la ubicación de la cache.
70

Figura 5.1. Diagrama de bloques del 80486.


Fuente: http://www.duiops.net/hardware/micros/microshis.htm

El Pentium II incluye dos caches on-chip, una para datos otra para
instrucciones. Cada cache es de 8 KBytes, utilizando un tamaño de línea de 32
bytes y una organización asociativa por conjunto de dos vías. Incluye además
una cache L2 que alimenta a las dos cache L1. La cache L2 es asociativa por
conjunto de cuatro vías, y con tamaños que oscilan entre 256 Kbytes y 1
Mbyte.

La figura 5.2 proporciona una visión simplificada de la estructura del Pentium


II, resaltando la ubicación de las tres caches.
71

Bus del sistema


Caché L2
(256K-1M)

Unidad de interfaz del bus

Caché de Cache de datos L1


instrucciones (8-16K)
L1 (8-16K)

Captar Cargar Memorizar

Unidad de
Captación y Unidad de Unidad de
decodificación envío y retirada
de ejecución
instrucciones

Depósito de instrucciones (buffer de reorden-ROB)

Figura 5.2. Diagrama de bloques del Pentium II

7.- En el ejemplo 5.4 pone en evidencia la evolución de la arquitectura


superescalar en los microprocesadores Intel, y describe la arquitectura
superescalar del Pentium II.

Ejemplo 5.4: Arquitectura superescalar del microprocesador Pentium II.

El microprocesador 80486 no disponía de elementos superescalares, el


Pentium original tenía unas características superescalares modestas, que
consistían en la utilización de dos unidades de ejecución de enteros
independientes. El Pentium Pro introdujo un diseño completamente
superescalar. Por su parte, el Pentium II tiene básicamente la misma
organización superescalar que el Pentium Pro.

En la figura 5.2 mostrada anteriormente, se presenta el diagrama de bloques


del Pentium II. Los elementos esenciales de la organización superescalar son:
la unidad de captación y decodificación de instrucciones, la unidad de envío y
ejecución, y la unidad de retiro. Se describe a continuación la operación de
cada una de ellas:
72

Operación de la unidad de captación y decodificación.

La figura 5.3 es un esquema simplificado de la unidad de captación y


decodificación del Pentium II. La operación de captación consta de tres etapas
encauzadas:

Desde la cache de
instrucciones

Camino de 32 bytes

Buffer de instrucciones Siguiente IP


IFU1 (contiene una línea)

16 bytes

Decodificador de Predicción dinámica


IFU2 longitud de de saltos
instrucciones
16 bytes

Etapa de alineación
IFU3 para los
decodificadores
16 bytes

Secuenciador de
Decodificador 0 Decodificador 1 Decodificador 2
ID1 (complejas) (sencillas) (sencillas)
instrucciones de
microcódigo

6 x 118 bits
Cola de instrucciones Predicción estática
ID2 decodificadas de sºaltos
3 x 118 bits
3 x 118 bits
RAT Asignador de registros

Al ROB

Figura 5.3. Unidad de captación/decodificación del Pentium II

Etapa IFU1

Capta instrucciones desde la cache de instrucciones, una línea (32 bytes) cada
vez. La unidad <<Siguiente IP>> proporciona la dirección de la siguiente
instrucción a captar, y se capta en el buffer IFU1 la línea de cache que contiene
la instrucción. Esta operación no se calcula sencillamente incrementando el
puntero, porque podría haber un salto o una interrupción pendiente que
moviese el puntero a una posición diferente. Después el contenido del buffer
IFU1 pasa IFU2 (16 bytes cada vez).
Etapa IFU2
73

Esta unidad lleva a cabo dos operaciones en paralelo. IFU2 examina los bytes
para determinar los límites de las instrucciones; esta es una operación
necesaria, debido a que las instrucciones del Pentium son de longitud variable.
Si alguna de las instrucciones es de salto, la unidad pasa la dirección de
memoria correspondiente a la unidad de predicción dinámica de saltos. IFU2
pasa después el bloque de 16 bytes a IFU3, que es responsable de alinear las
instrucciones para presentarlas al decodificador apropiado.

Etapa IFU3

Para comprender el funcionamiento de esta etapa, es necesario describir la


primera etapa de la unidad de decodificación de instrucciones, ID1. Esta etapa
es capaz de manejar tres instrucciones en paralelo. ID1 traduce cada
instrucción en de una a cuatro microoperaciones cada una de 118 bits. ID1
contiene tres decodificadores. El primero de ellos puede manejar instrucciones
que se traduzcan hasta en cuatro microoperaciones. El segundo y el tercer
decodificador maneja instrucciones sencillas que correspondan a una única
microoperación (instrucciones registro a registro e instrucciones de carga). Si
más de una instrucción es compleja, las instrucciones deben introducirse en
ID1 en etapas, de tal modo que el segundo y tercer decodificador no se les dé
una instrucción compleja. Las instrucciones que requieren más de cuatro
microoperaciones, se transfieren al secuenciador de instrucciones de
microcódigo (MIS, microcode instruction sequencer), el cual funciona como
unidad microprogramada.

La salida de ID1 o MIS se introduce en la segunda etapa de decodificación,


ID2, es un bloque de hasta seis microoperaciones a la vez. En este punto, hay
una segunda ocasión para predecir saltos. Las microoperaciones encoladas en
ID2 pasan a través de una fase de renombramiento de registro (RAT, register
allocator). El RAT transforma las referencias a lo 16 registros de la arquitectura.
Después el RAT introduce las microoperaciones revisadas al buffer de
reordenación (ROB, reorder buffer). Las microoperaciones entran al ROB en
orden; después son enviadas desde el ROB a la unidad de envío/ejecución sin
orden.

Operación unidad de envío/ejecución

La figura 5.4 es un esquema simplificado de la unidad de envío/ejecución del


Pentium II. La central de reservas (RS, reservation station) es responsable de
recuperar las microoperaciones del ROB., enviándolas a su ejecución y
guardando los resultados de nuevo en el ROB. La RS busca en el ROB
microoperaciones cuyo estado indique que la microoperación dispone de todos
sus operandos. Si está disponible la unidad de ejecución que necesita una
microoperación, la RS capta esa microoperación y la envía a la unidad de
ejecución conveniente. Se pueden enviar hasta cinco microoperaciones en un
ciclo.

Hay cinco puertos que unen la RS a las cinco unidades de ejecución. El puerto
0 se usa para instrucciones con enteros y coma flotante, con la excepción de
las operaciones sencillas con enteros y la gestión de las predicciones de saltos
74

erróneas que se asignan al puerto 1. Las unidades de ejecución MMX se


asignan también a estos puertos. Los puertos restantes se utilizan para cargas
y almacenamientos en memoria.

Cuando se completa una ejecución, se actualiza la entrada adecuada del ROB,


y la unidad de ejecución queda disponible para otra microoperación.

Unidad de ejecución
Puerto 4 de almacenamientos

C Unidad de ejecución A/desde la


e Puerto 3 de almacenamientos cache de
n datos
t
r
a Puerto 2 Unidad de ejecución
A/desde l de cargas
ROB
d
Desplazador MMX
e
ALU MMX
R Puerto 1
e IEU (sencillas) Y JEU
s
e
r
v ALU MMX
a Multiplicador MMX
s
IEU (complejas)
FPU (complejas)
Puerto 0
FPU (sencillas)

Figura 5.4. Unidad de envío/ejecución del Pentium II

Unidad de Retiro

La unidad de retiro (RU, retire unit) va procesando el buffer de reordenación


para entregar los resultados de la ejecución de instrucciones. En primer lugar la
RU debe tener presentes los fallos en las predicciones de salto, y las
microoperaciones que se hayan ejecutado pero para las cuales los saltos
precedentes no se hayan validado. Una vez que se determina que una
microoperación se ha ejecutado y no es vulnerable a eliminación debido a un
fallo de predicción se marca como lista para ser retirada. Cuando se ha retirado
la instrucción del Pentium previa, y todas las microoperaciones de la siguiente
instrucción se han marcado como listas para ser retiradas, la RU actualiza los
registros de la arquitectura afectados por esta instrucción, y quita del ROB la
microoperación.
75

Ejemplo 5.5: Mejoras incorporadas al sistema de memoria del 80486.

Dada la disponibilidad de sistemas de memoria muy grandes, y debido a que


los costos de los circuitos son mínimos, muchos fabricantes de tarjetas de
memoria han agregado la verificación de paridad a sus tarjetas de memoria
RAM. Esto se pone de manifiesto al comparar el sistema de memoria del
microprocesador 80386 y del 80486. Ambos sistemas contienen 4 GB, pero el
sistema de memoria del 80486 incluye un generador / detector de paridad
interno, para determinar si un dato es leído correctamente de una localidad de
memoria.

Ejercicios propuestos

1.- Explique cómo el modo pipeline alarga el tiempo de acceso para muchos
accesos de memoria en un sistema basado en el microprocesador 80386.

2.- El avance de la tecnología ha traído consigo la aparición de una cantidad


importante de nuevos bienes y servicios de carácter tecnológico, como los
móviles, ordenadores, los servicios de Internet, etc. El desarrollo de la
investigación e innovación permite la constante actualización y renovación
del sector tecnológico, tal es el caso de la potencia de los
microprocesadores la cual se duplica cada 18 meses.

Con base a la información anterior analice la evolución de la velocidad de


los microprocesadores Intel y describa las mejoras del desempeño
obtenidas en la construcción de computadoras personales.

Consulta en otros libros

[Sayers 1995] trata arquitecturas prácticas de microprocesadores de 8, 16 y 32


bits.

[Tokheim, 1995] incluye información sobre microprocesadores de la compañía


Intel y Motorola.

[Stallings 2000] Destaca las mejoras del diseño de microprocesadores tomando


como ejemplos el microprocesador Pentium II y el PowerPC.

Además se encuentra información sobre la arquitectura del microprocesador en


cualquiera de los textos recomendados
76

 Consulta en la Web

http://www.duiops.net/hardware/micros/microshis.htm: Presenta la historia de


los microprocesadores Intel.

http://www.ac.uma.es/educacion/cursos/telecomunicacion/FundCompST/mas_
material/prestaciones/evolucion_80x86_n05.pdf: Muestra un cuadro en
donde se resume la evolución de la familia de microprocesadores Intel.

http://petra.euitio.uniovi.es/~i1766818/TUTOR/TUTOR06.htm#1: Describe de
una manera muy sencilla los microprocesadores Intel a partir del modelo
80486.

Ejercicios de Autoevaluación

1.- Si se compara la arquitectura del microprocesador 80386 con la del 80486


no se encontrará diferencias. Sin embargo el tiempo de ejecución de las
instrucciones varía significativamente de un microprocesador a otro.

Con base a la información analice cómo ha evolucionado el tiempo de


ejecución de las instrucciones en estos microprocesadores para la mejora
del desempeño.

2.- La unidad de coma flotante del microprocesador Pentium se ha rediseñado


totalmente respecto a la que usa el 80486. Este desarrollo ha ocasionado
la ejecución más rápida de operaciones aritméticas y de carga de datos.

Tome como base lo antes expuesto y realice lo siguiente:


- Estudie la construcción de la unidad de coma flotante en el Pentium II y
describa las mejoras incluidas en su construcción para un mejor
desempeño.

Respuesta a los Ejercicios de Autoevaluación

1.- En el 80486 casi la mitad de las instrucciones son ejecutadas en un período


de reloj, en vez de los dos períodos que necesita el 80386 para ejecutar
instrucciones similares.

2.- La unidad de coma flotante del Pentium II, hace uso de nuevos algoritmos
que aceleran la ejecución de las operaciones e incluye nuevos elementos
de hardware dedicados, como son: un multiplicador, un sumador y un
divisor.
77

UNIDAD 6

El Coprocesador Aritmético y la Tecnología MMX.


Los procesadores del tipo 8086 solo podían realizar operaciones aritméticas
con números enteros. Para los fraccionarios debían utilizar complicados
artificios, por lo que desde el principio se crearon procesadores específicos y
costosos para operaciones aritméticas con números fraccionarios. Puesto que
la CPU no hace otra cosa que cálculos, el estudiante podría estar
preguntándose por qué necesita ayuda para realizarlos. Lo que ocurre es que
la CPU solo puede llevar a cabo operaciones aritméticas básicas con números
enteros, para procesar operaciones con valores fraccionarios, requiere
bastante tiempo lo que disminuye su velocidad considerablemente, debido
especialmente a que la CPU tiene que ejecutar también otras tareas
simultáneamente. En aquellos campos de aplicación donde se requieren
muchas posiciones decimales y los errores de redondeo deben de mantenerse
tan insignificantes como sea posible, resulta imprescindible la utilización de un
coprocesador aritmético.

A partir de la introducción del 80486, Intel incorporó el coprocesador aritmético


junto con el procesador principal, por lo que su existencia dejó de ser opcional,
convirtiéndose en estándar. Con cada generación de CPU utilizada en
sistemas de computadoras personales Intel, también introducía su
correspondiente coprocesador.

La unidad 5 del presente material incluye el estudio del funcionamiento de la


familia de coprocesadores aritméticos etiquetada como 80X87. También se
incluye en esta unidad el estudio de la tecnología MMX, introducida por Intel
en su línea de procesadores Pentium.

Aunque no se pueda considerar la tecnología MMX como un procesador en si


mismo, es uno de los mayores pasos que ha dado Intel. Este realce incluye 57
nuevas instrucciones muy optimizadas para tareas multimedia, estas
instrucciones usan una técnica conocida como SIMD (single-instruction,
multiple-data), es decir una secuencia de instrucciones y múltiples secuencias
de datos que posibilita efectuar la misma operación, tal como una suma o una
multiplicación con varios elementos de datos a la vez

Objetivo de la Unidad 6: Analizar programas que resuelvan problemas


aritméticos, para la descripción de la operación del coprocesador aritmético o
de la tecnología MMX.

Contenido de la Unidad 5: El contenido de la unidad contempla el estudio de


los siguientes temas:

Formato de datos y arquitectura del coprocesador aritmético.


Conjunto de instrucciones y programación del coprocesador
aritmético.
La tecnología MMX: Tipos de datos y conjunto de instrucciones.
78

Actividades recomendadas para el estudio del contenido de la unidad 6.


1.- Examine la tabla 6.1, en ella puede identificar las lecturas de los temas
contentivos de la unidad 6:

MATERIAL DE
TÍTULO CONTENIDO CAPITULO
REFERENCIA

Formato de datos para el


coprocesador aritmético.

Arquitectura de 80X87.
El texto Los
El Coprocesador
Microprocesadores Conjunto de instrucciones.
Aritmético y la 14
Intel, B. B. Brey.
Tecnología MMX. Programación con el
coprocesador aritmético.
.
Introducción a la
tecnología MMX. Tipo de
datos e instrucciones.

Tabla 6.1

2.- Una vez leído el contendido indicado en la tabla 5.1, usted estará en
capacidad de responder lo siguiente:

2.2 ¿Qué tipos de datos maneja el coprocesador?

2.8 ¿Qué tipos de números flotantes soporta el coprocesador?

2.9 ¿Cuáles son las directivas que emplea el coprocesador para almacenar
datos?

2.10 ¿Para qué tipo de aplicaciones están diseñadas específicamente las


instrucciones MMX?

3.- Estudie los siguientes contenidos teóricos a través de los cuales


complementará los conocimientos adquiridos con las lecturas indicadas en
la tabla 6.1:

El Coprocesador Aritmético

Es un microprocesador de instalación opcional, también denominado Unidad de


Punto Flotante, que auxilia al microprocesador en el uso eficiente de programas
de graficación, cálculos matemáticos complejos y diseño, lo cual al
79

especializarse en dichas funciones acelera la velocidad con que una


computadora puede responder a necesidades tan sofisticadas.
Los coprocesadores están todavía mas críticamente ajustados a la velocidad
del reloj que los procesadores normales. Por lo tanto, debe asegurarse que
cualquier coprocesador que se seleccione para un sistema esté diseñado para
manejar la frecuencia de reloj de su computadora.

Fuente: El autor.

Instrucción Simple, Múltiples Datos (SIMD)

Las aplicaciones de multimedia y comunicaciones de hoy en día con frecuencia


usan ciclos repetitivos que, aunque ocupan el 10 por ciento o menos del código
total de la aplicación, pueden ser responsables hasta por el 90 por ciento del
tiempo de ejecución. El proceso denomina SIMD (Single Instruction Multiple
Data) hace posible que una instrucción realice la misma función sobre múltiples
datos, en otras palabras, las instrucciones ejecutan las operaciones
simultáneamente en varios datos en paralelo. Un ejemplo de su funcionamiento
en la realidad es con el vídeo: En los procesadores conocidos hasta la llegada
del MMX llegaban 8 pixeles de datos gráficos de una en una y se procesaban
separadamente. En los procesadores MMX, los 8 pixeles llegan al procesador
en un paquete de 64 bits y se procesan a todos en una sola instrucción.
Otro ejemplo lo tenemos aquí, en una muestra de sonido de 16 bits, podemos
manipular hasta 4 muestras al mismo tiempo. Sobre una aplicación estándar, el
rendimiento mejora entre un 10 y un 20 por ciento, pero cuando el programa ha
sido diseñado específicamente para utilizar todo el potencial del MMX, el
rendimiento puede llegar al 40 o 60 por ciento.
http://neutron.ing.ucv.ve/revista-e/No3/Ferreira.html

Pixel

Píxel es la abreviatura de la expresión inglesa Picture Element (Elemento de


Imagen), y es la unidad más pequeña que encontraremos en las imágenes
compuestas por mapa de bits. El píxel es la unidad mínima en que se divide
la retícula de la pantalla del monitor y cada uno de ellos tiene diferente color.

Su tono de color se consigue combinando los tres colores básicos (rojo, verde y
azul) en distintas proporciones. Un píxel tiene tres características distinguibles:

Forma cuadrada
Posición relativa al resto de píxeles de un mapa de bits.
Profundidad de color (capacidad para almacenar color), que se
expresa en bits.

http://www2.canalaudiovisual.com/ezine/books/jirimag/1Imag21.htm

Instrucciones MMX del Pentium

Este conjunto de instrucciones está orientado a programación multimedia. Los


datos de vídeo y audio suelen representarse mediante vectores o matrices
80

grandes, compuestos por datos de longitud reducida (8 o 16 bits), mientras que


las instrucciones convencionales operan normalmente con datos de 32 o 64
bits. Estos son algunos ejemplos: En gráficos y en vídeo, cada escena
consiste en una matriz de puntos de imagen, y hay 8 bits para cada punto de
imagen u 8 bits para cada componente de color (rojo, verde, azul) del punto de
imagen. Las muestras de audio suelen estar cuantizadas con 16 bits. Para
algunos algoritmos de gráficos de 3D es común emplear 32 bits para los tipos
de datos básicos. Para posibilitar le procesamiento paralelo con estos tamaños
de datos, en MMX se definen tres nuevos tipos de datos. Tienen una longitud
de 64 bits, y constan de varios campos de datos más pequeños, cada uno de
los cuales contiene un entero de coma fija. Estos tipos de datos son los
siguientes:

• Byte empaquetado: Ocho bytes en una cantidad de 64 bits.


• Palabra empaquetada: Cuatro palabras de 16 bits empaquetadas en 64
bits.
• Palabra doble empaquetada: Dos palabras dobles de 32 bits
empaquetadas en 64 bits.

[Stallings, 2000]

4.- En el siguiente ejemplo se muestra el uso de la instrucción PADDB de la


tecnología MMX disponible en el Pentium II:

Ejemplo 6.1: Suma con saturación mediante el uso de la instrucción


PADDB.

La instrucción PADDB toma como operando un byte empaquetado, y realiza en


paralelo sumas con cada posición de byte para producir un byte empaquetado
de salida.

Una característica inusual que presenta el conjunto de instrucciones MMX es la


introducción de la aritmética de saturación. Con la aritmética sin signo
ordinaria, cuando una operación produce un desbordamiento (es decir, se
produce una acarreo en la posición del bit mas significativa) el bit se trunca.
Considere, por ejemplo las dos palabras en hexadecimal, F000H y 3000H. Su
suma se expresaría como:

F000H = 1111 0000 0000 0000


+3000H = 0011 0000 0000 0000
1 0010 0000 0000 0000 = 2000H

Acarreo
81

Si los dos números representaban intensidad de imagen, el resultado de la


suma hace que la combinación de zonas sombreadas oscuras aparezca como
más clara. Esto no es lo que se pretende normalmente. Mediante la aritmética
con saturación, cuando la suma produce un desbordamiento, o la resta
produce un desbordamiento negativo, el resultado se fija respectivamente al
mayor o al menor valor representable. Para el ejemplo dado, la aritmética con
saturación daría como resultado:

F000H = 1111 0000 0000 0000


+3000H = 0011 0000 0000 0000
1 0010 0000 0000 0000 = 2000H

Acarreo
1111 1111 1111 1111 = FFFFH

Suma con saturación

5.- En el ejemplo 6.2 tomado de [Stallings, 2000], se muestra el uso de las


instrucciones MMX en una función típica de video.

Ejemplo 6.2: Composición de una imagen en una función típica de


vídeo mediante el uso de la tecnología MMX.

Una función típica de vídeo es el efecto de desvanecimiento o extinción


progresiva (fade-out) y reaparición (fade-in), mediante el cual una imagen A se
deshace y convierte gradualmente en otra B. Las dos imágenes se combinan
mediante una media ponderada:

Pixel_resultado = Pixel_A x fade + Pixel_B x (1 – fade)

Este cálculo se efectúa para cada posición de punto de imagen en A y B. Si se


produce una secuencia de video mientras fade está cambiando
progresivamente desde 1 a 0 (con una escala ajustada a un entero de 8 bits), el
resultado es una transformación paulatina de la imagen A en la imagen B.

La figura 6.1 muestra para un conjunto de puntos de imagen, la secuencia de


pasos necesaria. Las componentes de pixel de 8 bits son transformadas en
elementos de 16 bits para adaptarlas al tamaño de las multiplicaciones MMX de
16 bits.
82

Alpha Alpha

Azul Azul

Verde Verde

Rojo Rojo

Imagen A Imagen B

Ar3 Ar2 Ar1 Ar0 Br3 Br2 Br1 Br0

1. Desempaquetar
bytes de
Ar3 Ar2 Ar1 Ar0 Br3 Br2 Br1 Br0
componentes de
pixel rojo de las Sustracción
imágenes A y B

2. Restar la imagen
B de la imagen r3 r2 r1 r0
A

X X X X
3.Multiplicar el
resultado por el fade fade fade fade
valor de fade

fade x r3 fade x r2 fade x r1 fade x r0

4.Sumar los pixels + + + +


de la imagen B
Br3 Br2 Br1 Br0

5.Volver a nuevor3 nuevor2 nuevor1 nuevor0


empaquetar en
bytes los nuevos
píxels
compuestos r3 r2 r1 r0

Figura 6.1 Composición de imagen en una representación de planos de colores


83

A continuación se presenta el código MMX que ejecuta las operaciones antes


indicadas:

PXOR MM7, MM7 ; poner a cero MM7


MOVQ MM3, fad_val ; cargar el valor de fade replicado 4
veces
MOVD MM0, imagenA ; cargar las componentes de rojo de 4
pixels de la imagen A
MOVD MM1, imagenB ; cargar las componentes de rojo de 4
pixels de la imagen B
PUNPCKBLW MM0, MM7 ; desempaquetar a 16 bits 4 pixels
PUNPCKBLW MM1, MM7 ; desempaquetar a 16 bits 4 pixels
PSUBW MM0, MM1 ; restar la imagen B de la imagen A
PMULHW MM0, MM3 ; multiplicar los valores de la resta por
el valor de fade
PADDDW MM0, MM1 ; sumar el resultado a la imagen B
PACKUSWB MM0, MM7 ; empaquetar en bytes los resultados
de 16 bits

Ejercicios propuestos

1.- La siguiente línea corresponde a una sección de un programa escrito para


ser ejecutado por el coprocesador aritmético:

FST DATA

Analice la sección del programa dado y describa cómo la ejecuta el


coprocesador. Asuma que DATA está definida como una localidad de
memoria de 64 bits.

2.- Describa cómo ocurre la saturación con signo, si las cantidades a sumar
son de un byte.

Consulta en otros libros

[Stallings 2000] Destaca las mejoras del diseño de microprocesadores tomando


como ejemplos el microprocesador Pentium II y el PowerPC.
84

Ejercicios de Autoevaluación

1.- El siguiente conjunto de instrucciones, ha sido extraído de un programa


desarrollado para ser ejecutado por el coprocesador aritmético:

.MODEL SMALL
.
.
.
RAD .DD 2.34
.
.
FLD RAD
.
.
.

Analice la sección del programa dado y describa que función realiza la


instrucción FLD RAD.

2.- A continuación se presenta la sección de un programa que emplea


instrucciones MMX, tales como:

PADDB MM1, MM2

Para la instrucción dada, responda lo siguiente:

• ¿Qué tipo de operación permite realizar?


• Describa qué función realiza esta instrucción.

Respuesta a los Ejercicios de Autoevaluación

1.- En la sección del programa dado, la instrucción FLD RD, carga el valor
almacenado en RAD en ST.

2.- Solución:

• La instrucción permite realizar la operación aritmética de la suma.


• Esta instrucción suma el contenido completo de 64 bits del registro MM2
al contenido del registro MM1, byte por byte. El resultado es ubicado en
MM1.
85

MÓDULO III

PROGRAMACIÓN DEL MICROPROCESADOR


El módulo III está conformado por las unidades 7 y 8. El estudio de estas
unidades, permite desarrollar en el estudiante las competencias necesarias en
la solución de problemas, haciendo uso de los microprocesadores.

El desarrollo de la solución implicará, la codificación de algoritmos en el


lenguaje ensamblador del microprocesador Intel 80286 y la implementación del
programa codificado en un microprocesador de este tipo. El programa así
codificado, se ejecutará en un software simulador, el cual proporciona un
modelo real de un microprocesador Intel 80286.

Objetivo del Módulo III: Implementar con sentido lógico y creativo,


programas específicos, haciendo uso de los microprocesadores.

El módulo III está estructurado en dos unidades:

Unidad 7: Programación en Lenguaje Ensamblador


Unidad 8: Implementación de Programas en el Microprocesador
86

UNIDAD 7

Programación en Lenguaje Ensamblador

Los programas que convierten un programa de usuario escrito en algún


lenguaje, a otro lenguaje, se llaman traductores. El leguaje en el que está
escrito el programa original se llama lenguaje fuente, y el lenguaje a que se
convierte se llama lenguaje objeto o lenguaje de máquina. El lenguaje fuente
es en lo esencial una representación simbólica (lenguaje mnemotécnico) de un
lenguaje de máquina numérico, el traductor se llama lenguaje ensamblador.
Las computadoras siguen utilizando el lenguaje de máquina para procesar los
datos, pero los programas ensambladores traducen antes los símbolos de
código de operación especificados a sus equivalentes en lenguaje de máquina.
Este proceso es al que se le denomina ensamblado de código. Para facilitar la
elaboración de programas a este nivel, se desarrollaron los Ensambladores y
el Lenguaje Ensamblador.

En la unidad 5 se presenta el uso del lenguaje ensamblador, específicamente


el correspondiente al microprocesador 80286. El estudio de esta unidad
afianzará en el estudiante los conocimientos obtenidos en el curso,
especialmente en lo que respecta a la programación

Objetivo de la Unidad 7: Codificar algoritmos, utilizando un lenguaje


ensamblador y las técnicas apropiadas, para la resolución de un problema
específico.

Contenido de la Unidad 7: El contenido de la unidad contempla el estudio de


los siguientes temas:

Lenguaje ensamblador, Lenguaje de máquina


Mnemónicos, Conjunto de instrucciones de un
microprocesador específico
Programación modular
Codificación de algoritmos en un lenguaje ensamblador
específico
87

Actividades recomendadas para el estudio del contenido de la unidad 7.


1.- Lea el capítulo 7 del texto Los Microprocesadores Intel, B. B. Brey.

2.- Lea los siguientes contenidos teóricos:

Lenguaje de Máquina

Es el sistema de códigos directamente interpretable por un circuito


microprogramable, como el microprocesador de un ordenador o el
microcontrolador de un autómata (un PIC). Este lenguaje está compuesto por
un conjunto de instrucciones que determinan acciones a ser tomadas por la
máquina. Un programa de computadora consiste en una cadena de estas
instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son
normalmente ejecutadas en secuencia, con eventuales cambios de flujo
causados por el propio programa o eventos externos. El lenguaje de máquina
es específico de cada máquina o arquitectura de la máquina, aunque el
conjunto de instrucciones disponibles pueda ser similar entre ellas.

http://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quina

Mnemónico

En Informática un Mnemónico es una palabra que sustituye a un código de


operación (Lenguaje de máquina), con lo cual resulta más fácil la
programación, es de aquí de donde resulta el concepto de lenguaje
ensamblador.
Un ejemplo común de mnemónico es la instrucción MOV, que le indica al
microprocesador que debe de mover datos de un lugar a otro. El
microprocesador no entiende palabras, sino que números binarios, por lo que
es necesario la traducción del mnemónico a código objeto.

http://es.wikipedia.org/wiki/Mnem%C3%B3nico

Lenguaje Ensamblador.

Una CPU puede interpretar y ejecutar instrucciones de máquina. Estas


instrucciones son, simplemente, números binarios almacenados en el
computador. Sin un programador quisiera programar directamente en lenguaje
de máquina, necesitaría introducir los programas como datos binarios.

Considere la sencilla sentencia BASIC:

N=I+J+K

Suponga que queremos programar esta sentencia en un lenguaje de máquina y


dar a I, J y K los valores iniciales 2,3, y 4, respectivamente. La forma de hacer
esto se muestra en la figura 7.1a. El programa empieza en la posición 101
88

(hexadecimal). Se reserva memoria parea las cuatro variables a partir de la


posición 201. El programa consta de cuatro instrucciones:

1. Cargar el contenido de la posición 201 en el acumulador (AC).


2. Sumar a AC el contenido de la posición 202.
3. Suma a AC el contenido de la posición 203.
4. Memorizar el contenido de AC en la posición 204.

Esto es claramente un proceso tedioso y muy susceptible de errores. Una


ligera mejora consiste en redactar el programa en hexadecimal, e lugar de en
binario, ver figura 7.1b.

Para que la mejora sea más significativa, podemos hacer uso de nombres
simbólicos o mnemotécnicos de las instrucciones. El resultado es el programa
simbólico mostrado en la figura 7.1c. Cada línea sigue representando una
posición de memoria, y consta de tres campos separados por espacios. El
primer campo contiene la dirección de una posición. El segundo campo
contiene el símbolo de tres letras que representa su código de operación. Si se
trata de una instrucción que hace referencia a memoria, un tercer campo
contiene la dirección. Para memorizar un dato concreto en una posición dada,
nos inventamos una pseudoinstrucción con el símbolo DAT. Esta es
meramente un indicador de que el tercer campo de la línea contiene un número
en hexadecimal a memorizar en la posición que especifica el primer campo.

El uso de programas simbólicos hace la vida mucho más fácil, pero es aun
engorroso. En particular hay, hay que dar una dirección absoluta para cada
palabra. Un procedimiento mejor, es emplear direcciones simbólicas. Esto se
ilustra en la figura 7.1d. Cada línea sigue teniendo tres campos. El primero
sigue siendo para la dirección, pero se utiliza un símbolo en lugar de una
dirección numérica absoluta. Algunas líneas carecen de dirección, indicando
que la dirección de dicha línea es uno más que la dirección precedente. Para
las instrucciones que hacen referencia a memoria, el tercer campo contiene
también una dirección simbólica.

Con este último refinamiento, hemos inventado un lenguaje ensamblador. Los


programas escritos en lenguaje ensamblador (programas en ensamblador) se
traducen a lenguaje de máquina mediante un ensamblador.

El desarrollo de los lenguajes ensambladores fue un logro importante en la


evolución de la tecnología de computadores. Fue el primer paso hacia los
lenguajes de alto nivel de hoy en día.
89

Dirección Contenido
101 0010 0010 0000 0001 101 LDA 201
102 0001 0010 0000 0010 102 ADD 202
103 0001 0010 0000 0011 103 ADD 203
104 0011 0010 0000 0100 104 STA 204

201 0000 0000 0000 0010 201 DAT 2


202 0000 0000 0000 0011 202 DAT 3
203 0000 0000 0000 0100 203 DAT 4
204 0000 0000 0000 0000 204 DAT 0

(a) Programa en binario (c) Programa simbólico

Dirección Contenido Etiqueta Operación Operando


101 2201 FORMUL LDA I
102 1202 ADD J
103 1203 ADD K
104 3204 STA N

201 0002 I DATA 2


202 0003 J DATA 3
203 0004 K DATA 4
204 0000 N DATA 0

(a) Programa en hexadecimal (c) Programa en ensamblador

Figura 7.1. Cálculo de la fórmula N = I + J + K.

Stallings, 2000.pp. 346.

Conjunto de instrucciones

Un conjunto de instrucciones ó repertorio de instrucciones ó ISA (del inglés


instruction set architecture -arquitectura del conjunto de instrucciones-) es una
especificación que detalla las instrucciones que una CPU de un ordenador
puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseño particular de una CPU. El término describe los
aspectos del procesador generalmente visibles a un programador, incluyendo
los tipos de datos nativos, las instrucciones, los registros, la arquitectura de
memoria y las interrupciones, entre otros aspectos.

La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para


distinguir este conjunto de características de la microarquitectura, que son los
elementos y técnicas que se emplean para implementar el conjunto de
instrucciones. Entre estos elementos se encuentras las microinstrucciones y los
sistemas de caché.

Procesadores con diferentes diseños internos pueden compartir un conjunto de


instrucciones; por ejemplo el Intel Pentium y AMD Athlon implementan
90

versiones casi idénticas del conjunto de instrucciones x86, pero tiene diseños
internos completamente opuestos.

http://es.wikipedia.org/wiki/Conjunto_de_instrucciones

Diseño del repertorio de instrucciones

Uno de los aspectos más interesantes y más analizado del diseño de un


computador, es el diseño del repertorio de instrucciones del lenguaje de
máquina. El diseño de un repertorio de instrucciones es muy complejo, ya que
afecta a muchos aspectos del computador. El repertorio de instrucciones define
muchas de las funciones realizadas por la CPU y tiene, por tanto, un efecto
significativo sobre la implementación de la misma. El repertorio de
instrucciones es el medio que tiene el programador para controlar la CPU.

Algunos de los aspectos más básicos relativos al diseño son los siguientes:

• Repertorio de operaciones: Cuántas y qué operaciones considerar, y


cuán complejas deben ser.
• Tipos de datos: Los distintos tipos de datos con los que se efectúan las
operaciones.
• Formato de instrucciones: Longitud de la instrucción (bits), número de
direcciones, tamaño de los distintos campos, etc.
• Registros: Número de registros de la CPU que pueden ser referenciados
por instrucciones, y su uso.
• Direccionamiento: El modo o modos de direccionamiento mediante los
cuales puede especificarse la dirección del operando.

Stallings, 2000. pp. 318.

El microprocesador Intel 80286

El Intel 80286 (llamado oficialmente iAPX 286, también conocido como i286 o
286) es un microprocesador de 16 bits de la familia x86, que fue lanzado al
mercado por Intel el 1 de febrero de 1982. Las versiones iniciales del i286
funcionaban a 6 y 8 MHz, pero acabó alcanzando una velocidad de hasta 20
MHz. El i286 fue el microprocesador más empleado en los IBM PC y
compatibles entre mediados y finales de los años 80.
El i286 funciona el doble de rápido por ciclo de reloj que su predecesor (el Intel
8086) y puede direccionar hasta 16 Mbytes de memoria RAM, en
contraposición a 1 Mbyte del i8086. En máquinas DOS, esta memoria adicional
solo podía ser accedida a través de emulación de memoria extendida. De todos
modos, pocos ordenadores basados en el i286 tuvieron más de 1 Mbyte de
memoria.

El i286 fue diseñado para ejecutar aplicaciones multitarea, incluyendo


comunicaciones (como centralitas automatizadas), control de procesos en
tiempo real y sistemas multiusuario. Para ello se le añadió un modo protegido,
91

en el cual existían cuatro anillos de ejecución y división de memoria mediante


tablas de segmentos. En este modo trabajaban las versiones de 16 bits del
sistema operativo OS/2.
A pesar de su gran popularidad, hoy en día quedan pocos ordenadores con el
i286 funcionando. El sucesor del i286 fue el Intel 80386, de 32 bits.

http://es.wikipedia.org/wiki/Intel_80286

3.- En el ejemplo 7.1, se muestra un programa fuente que permite desplegar un


mensaje en pantalla mediante llamadas al DOS.

Ejemplo 7.1: Programa fuente que imprime un mensaje en la pantalla.

Aquí se tratará todo lo concerniente con el lenguaje ensamblador y el conjunto


de directivas del Microsoft Macro Assembler v4.0. Si bien esto puede resultar
bastante extenso y complejo, aquí sólo se describirán las instrucciones y
directivas básicas.

Para comenzar se presenta un pequeño ejemplo que ilustra el formato del


programa fuente. Este ejemplo está completamente desarrollado en lenguaje
ensamblador que usa servicios o funciones de MS-DOS (system calls) para
imprimir el mensaje Hola mundo en pantalla.

; HOLA.ASM
; Programa clasico de ejemplo. Despliega una leyenda en pantalla.
STACK SEGMENT STACK ; Segmento de pila
DW 64 DUP (?) ; Define espacio en la pila
STACK ENDS

DATA SEGMENT ; Segmento de datos


SALUDO DB "Hola mundo",13,10,"$" ; Cadena
DATA ENDS

CODE SEGMENT ; Segmento de Código


ASSUME CS:CODE, DS:DATA, SS:STACK

INICIO: ; Punto de entrada al programa


MOV AX,DATA ; Pone dirección en AX
MOV DS,AX ; Pone la direccion en los registros
MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje
MOV AH,09H ; Función: Visualizar cadena
INT 21H ; Servicio: Funciones alto nivel DOS
MOV AH,4CH ; Función: Terminar
INT 21H
CODE ENDS
END INICIO ; Marca fin y define INICIO
92

La descripción del programa es como sigue:

• Las declaraciones SEGMENT y ENDS definen los segmentos a usar.

• La variable SALUDO en el segmento DATA, define la cadena a ser


desplegada. El signo de dólares al final de la cadena (denominado
centinela) es requerido por la función de visualización de la cadena de
MS-DOS. La cadena incluye los códigos para carriage-return y line-feed.

• La etiqueta INICIO en el segmento de código marca el inicio de las


instrucciones del programa.

• La declaración DW en el segmento de pila define el espacio para ser


usado por el stack del programa.

• La declaración ASSUME indica que registros de segmento se asociarán


con las etiquetas declaradas en las definiciones de segmentos.

• Las primeras dos instrucciones cargan la dirección del segmento de


datos en el registro DS. Estas instrucciones no son necesarias para los
segmentos de código y stack puesto que la dirección del segmento de
código siempre es cargada en el registro CS y la dirección de la
declaración del stack segment es automáticamente cargada en el
registro SS.

• Las últimas dos instrucciones del segmento CODE usa la función 4CH
de MS-DOS para regresar el control al sistema operativo. Existen
muchas otras formas de hacer esto, pero ésta es la más recomendada.

• La directiva END indica el final del código fuente y especifica a START


como punto de arranque.

5.- El ejemplo 7.2 muestra la importancia del uso de las directivas PUBLIC y
EXTRN en la programación modular.

Ejemplo 7.2: Uso de directivas PUBLIC y EXTRN.

A continuación se presentan dos módulos de programa: MAIN y TASK, el


primer módulo corresponde al módulo principal, mientras que el segundo al
módulo que contiene una rutina. Ambos módulos son archivos que se editan
por separado, se ensamblan por separado, pero se ligan juntos.
93

MODULO PRINCIPAL: MAIN.ASM


NAME MAIN
PUBLIC EXIT
EXTRN PRINT:NEAR

STACK SEGMENT WORD STACK 'STACK'


DW 64 DUP(?)
STACK ENDS

DATA SEGMENT WORD PUBLIC 'DATA'


DATA ENDS

CODE SEGMENT BYTE PUBLIC 'CODE'


ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA ; carga localización del segmento
MOV DS, AX ; en el registro DS
JMP PRINT ; va a PRINT en el otro modulo
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END START

SUBMODULO: TASK.ASM
NAME TASK
PUBLIC PRINT
EXTRN EXIT:NEAR

DATA SEGMENT WORD PUBLIC 'DATA'


ENTRADA DB "Entrando a un submodulo....",13,10,"$"
SALIDA DB ".......saliendo del submodulo.",01,07,13,10,"$"
DATA ENDS

CODE SEGMENT BYTE PUBLIC 'CODE'


ASSUME CS:CODE, DS:DATA
PRINT:
MOVE AH,06H ; Función para borrar pantalla
MOV AL,0 ; todas las líneas
MOV CX,0 ; de 0,0
MOV DH,24D
MOV DL,79D
MOV BH,0 ; atributo en líneas vacías
INT 10H ; Ser vicio de e/s vídeo
MOV DX, OFFSET ENTRADA
MOV AH,09H
INT 21H
MOV DX, OFFSET SALIDA
INT 21H
94

JMP EXIT ; Regresa al otro modulo


CODE ENDS
END

Ejercicios propuestos

1.- Codifique una rutina en el lenguaje ensamblador del 80286 que permita el
ingreso de caracteres, verificando si se ha oprimido una tecla pero sin
esperar que ocurra. Si esto ha ocurrido entonces devuelve su codificación
ASCII en un registro; en caso contrario devuelve cero.

2.- Considere una cadena como una secuencia de caracteres terminada por un
byte cero, y se requiere calcular su longitud.

Con base a lo antes planteado, codifique en el lenguaje ensamblador 80286


un algoritmo que permita calcular la longitud de la cadena de caracteres.

Consulta en otros libros

[Stallings 2000] Incluye el repertorio de instrucciones de dos familias de


computadores: el Pentium II de Intel y el Power PC.

[Englander 2002] Incluye la descripción del conjunto de instrucciones de la


familia x86.

 Consulta en la Web

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68H
C11.html:Contiene información interesante relacionada con el lenguaje
ensamblador.

http://www.alpertron.com.ar/80286.HTM: Describe el microprocesador 80286 y


las instrucciones adicionales que controlan el sistema de memoria
virtual.

Ejercicios de Autoevaluación

1.- Desarrolle un procedimiento llamado SUMS, que permita sumar el valor del
contenido de los registros BX, CX y DX con el contenido de AX. Utilice la
definición de procedimiento cercano (NEAR).
95

2.-Codifique un programa que despliegue OK en la pantalla del monitor,


utilizando para ello el procedimiento DISP mostrado a continuación:

DISP PROC NEAR


MOV AH, 2
INT 21H
RET
DISP ENDP

Respuesta a los Ejercicios de Autoevaluación

1.- El procedimiento es el siguiente:

SUMS PROC NEAR


ADD AX, BX
ADD AX, CX
ADD AC, DX
RET
SUMS ENDP

2.- A continuación se muestra el programa:

.MODEL TINY
.CODE
STARTUP
MOV BX, OFFSET DISP
MOV DL, ‘O’
CALL BX0
MOV DL, ‘K’
CALL BX
.EXIT
END
96

UNIDAD 8

Implementación de Programas en el Microprocesador

Una vez que el estudiante se ha familiarizado con el repertorio de instrucciones


de una arquitectura específica, y ha desarrollado una solución a un problema
específico mediante un programa, se pretende en la unidad 8, implementar el
programa codificado en un software simulador que le permitirá familiarizarse
con esta arquitectura haciendo uso de las instrucciones.

Objetivo de la Unidad 8: Implementar un programa en un microprocesador,


resolviendo un problema dado.

Contenido de la Unidad 8: El contenido de la unidad contempla el estudio de


los siguientes temas:

Uso del software simulador.


Ejecución de programas en el software simulador.
97

Actividades recomendadas para el estudio del contenido de la unidad 7.


1.- A continuación se presenta información relacionada con dos software de
simulación de la arquitectura del microprocesador Intel 8085. Se
recomienda su lectura por parte del estudiante, ya que esto le permitirá
visualizar el modelo de programación y la manera como opera este
microprocesador.

Cabe destacar que en la red Internet se encuentran disponibles estas


aplicaciones, algunos podrán descargarse en forma gratuita para su uso,
otros en cambio se ofertan para la venta.

Simulador del microprocesador 8085 versión 3 para Windows

Este simulador se oferta en Internet en la dirección:


http://www.insoluz.com/Micro/Micro.html.

La figura 8.1 presenta la arquitectura de este simulador, y a continuación se


resume sus características:

• Ofrece la transparencia completa de los registros, de los indicadores y


de la pila.
• Ofrece la codificación fácil a través de una pista del clave de código con
la validación completa de la entrada de información.
• Ofertas fáciles y el poner a punto extenso incluyendo puntos de
interrupción y perfilar.
• Tuerca hexagonal De las Ayudas / Ficheros De Obj.
• También ofrece un editor de textos del ensamblador con destacar del
sintaxis.
• El software es acuerdo y está disponible en lenguajes múltiples.
• Fichero diseñado y detallado del receptor de papel de la ayuda.

La figura 8.2 muestra una pantalla de aplicación en la cual puede apreciarse un


programa en ejecución. Por su parte en la figura 8.3, se muestra el proceso de
carga de un programa fuente, haciendo uso del editor de textos del
ensamblador.

http://www.insoluz.com/Sp/Micro/Micro.html
98

Figura 8.1. Simulador del microprocesador 8085 – Proceso de entrada


99

Figura 8.2. Simulador del microprocesador 8085 - Ejecución


100

Figura 8.1. Simulador del microprocesador 8085 – Editor de textos del ensamblador
101

Simulador del microprocesador 8085 versión 1.0.0

Desarrollado por Pedro J. Casanova Peláez, se encuentra disponible en forma


gratuita en la siguiente dirección electrónica:
http://voltio.ujaen.es/casanova/simu8085/sim8085.htm .

Este simulador presenta las siguientes características:

• Funciona bajo Windows


• Completo soporte de 64 KBytes de memoria y 256 puertos de E/S
• Entrada de datos en Hexadecimal
• Todos los registros visibles y modificables
• Ejecución paso a paso y seguida
• Carga / almacenamiento en formato hexadecimal Intel de 8 bits
• Ensamblador incluido

En la figura 8.4 puede apreciarse el modelo de programación de este


simulador.
102

Simulador del microprocesador 8085

Descargar

Volver a página anterior


103

Ejercicios propuestos

Implemente las rutinas codificadas en los Ejercicios Propuestos en la unidad 7,


en el software simulador disponible en la siguiente dirección electrónica:

http://voltio.ujaen.es/casanova/simu8085/sim8085.htm .

 Consulta en la Web

http://www.softwareforeducation.com/sms32v50/simulator.htm: Encontrará
información con un software simulador de microprocesador para
principiantes.

También podría gustarte