1. SUBSECRETARÍA DE EDUCACIÓN SUPERIOR
DIRECCIÓN
GENERAL
DE
EDUCACIÓN
SUPERIOR TECNOLÓGICA
INSTITUTO TECNOLÓGICO DE ACAPULCO
MANUAL DE PRÁCTICAS
ARQUITECTURA DE
COMPUTADORAS
(SCC0402)
Ing. Rolando Palacios Ortega
Acapulco Gro., Octubre de 2006
2. Contenido
Práctica # 1.- Ejecución de Microoperaciones en una
Computadora con arquitectura clásica
4
Práctica # 2.- Ejecución de Instrucciones en
una
Computadora con arquitectura clásica
26
Práctica # 3.- Verificación de los elementos que integran la
Arquitectura de una computadora comercial
utilizando software especializado
48
Práctica # 4.- Introducción a un sistema mínimo basado
en un microcontrolador Motorola MC68HC12
60
Bibliografía
74
2
3. Introducción
El desarrollo acelerado de la tecnología de los sistemas electrónicos digitales
ha creado un escenario realmente impensable hace pocos años.
Las computadoras hoy en día son omnipresentes, desde principios de los años
setentas, cuando aparecen en el mercado los microprocesadores y las
microcomputadoras la evolución de los circuitos integrados no se ha detenido,
pasando por el año de 1981, cuando se comercializa la primera computadora
personal de IBM que significó un parteaguas en la historia de la computación,
ya que a partir de ese momento las computadoras estuvieron al alcance de los
hombres y mujeres que anteriormente ni siquiera imaginaban que algún día
dependerían tanto de ellas.
Para el Ingeniero en Sistemas Computacionales es indispensable profundizar
en el estudio de la Arquitectura de Computadoras, ya que esto le permitirá
aprovechar al máximo todos los recursos disponibles en un sistema de
cómputo, independientemente de las tareas que se realicen en él, incluyendo
desarrollo de software de base, desarrollo de aplicaciones de software, diseño,
instalación y mantenimiento de sistemas de cómputo y muchas otras tareas.
Además, cuando parecía que todo estaba escrito, aparecen los
microcontroladores, computadoras en un circuito integrado cuyas
características los hacen adecuados para aplicaciones relativamente simples,
aunque sus recursos son muy amplios.
El presente manual incluye cuatro prácticas adecuadas para realizarse dentro
del curso y que abarcan el total de los temas incluidos en el programa de
Arquitectura de Computadoras, buscando lograr un balance tanto entre la
teoría y la práctica, como entre el hardware y el software, y además faciliten el
aprendizaje significativo en el alumno, proporcionándole conocimientos y
habilidades útiles en su formación, ajustándose a los objetivos de la carrera.
Nuestro agradecimiento a los alumnos de la Generación 2004 cuyas
aportaciones han hecho posible la elaboración de este Manual de Prácticas de
Arquitectura de Computadoras.
3
4. Práctica # 1.- Ejecución de Microoperaciones en una
Computadora con arquitectura clásica.
Objetivos:
Material:
Diseñar el modelo de una computadora con arquitectura clásica.
Analizar el comportamiento interno de una CPU.
Evaluar el modelo a través de un conjunto de microoperaciones.
Electronics WorkBench
Equipo:
Computadora Personal compatible con IBM PC
Diagrama:
Actividades:
Investigación documental relacionada con el tema.
Diseñar el circuito electrónico que realice las funciones del esquema a
bloques.
Capturar el circuito en el entorno de Electronics WorkBench.
Verificar la realización de microoperaciones de transferencia,
aritméticas, lógicas y de desplazamiento.
Registrar resultados y elaborar informe de la práctica.
4
5.
Manos a la obra:
Antes de empezar es necesario analizar el diagrama a bloques del circuito
electrónico que se diseñará.
Hay que tener bien definidos ciertos puntos:
Saber cuál es el objetivo principal del circuito de acuerdo al diagrama de
bloques.
Conocer minuciosamente el funcionamiento en general del circuito.
Tener presente, que tipo de dispositivos electrónicos serán necesarios para
armar el circuito electrónico.
Conocer cual es el funcionamiento de cada uno de los dispositivos que
forman parte del circuito.
Así, que antes de todo, es necesario tener estos puntos definidos para evitar
conflictos o arbitrariedades durante el transcurso del ensamble del circuito
electrónico.
Análisis del esquema a bloques:
De acuerdo al esquema a bloques, se identifican ciertos dispositivos necesarios
e indispensables para el armado del mismo, estos son:
Líneas de entrada, necesarias para introducir datos, para ser procesados.
Líneas de salida, necesarias para visualizar los datos, ya procesados.
Unidad Aritmética Lógica (ALU), necesaria para hacer los cálculos tanto
aritméticos y lógicos con los datos.
Acumulador, utilizado principalmente para almacenar el resultado del
proceso de los datos, por ejemplo el resultado de una suma entre los registros
A,B. También es utilizada principalmente para los desplazamientos hacia la
derecha o izquierda.
Hay ocasiones en que la ALU genera un bit de acarreo, y para no perderlo,
se hace uso de un fllip flop, para almacenar el bit de acarreo.
Bus necesario para los caminos virtuales, con él podemos realizar
transferencias entre los datos que tienen los registros almacenados. Por
ejemplo, para transferir desde la memoria al registro A, es necesario utilizar un
camino, o mejor dicho bus, para realizar dicha transferencia.
Como utilizamos un solo bus, para cualquier tipo de transferencia, es
necesario administrar las líneas, para evitar conflictos ó pérdida de datos, por
tal motivo, es necesario implementar en el esquema a bloques, el circuito de
tercer estado.
El trabajar con más de un conjunto de datos, es necesario el utilizar
registros, para almacenar temporalmente los datos en él, y evitar que anden
‘vagando’ por nuestro sistema, y mantenerlo en un registro almacenado.
En el caso de la entrada, se almacena en un registro, al hacer operaciones con
la ALU, es necesario almacenar los dos conjuntos de datos en dos registros
ligados a la ALU, para realizar las operaciones aritméticas ó lógicas entre ellos.
Lo mismo pasa con la salida, antes de mandar los datos a la salida, tienen que
almacenarse temporalmente en un registro.
5
6. Ocurre un caso especial con la memoria interna del CPU, ésta esta formada
por registros, con el propósito de almacenar los datos en ellos, y además
cuenta con un circuito de tercer estado, para tener el control de las Líneas.
La memoria de antemano tiene la necesidad de utilizar por lo menos dos
Líneas:
1... Lectura.
1
1
2... Escritura.
2
2
Ya que la memoria realiza una de estas dos funciones una a la vez, no se
puede leer un dato, y al mismo tiempo escribir en la memoria un nuevo dato.
Por lo que surge la necesidad de administrar estas dos Líneas con un circuito
de tercer estado.
Diseño a borrador del circuito electrónico:
Como ya mencionamos, para el armado del circuito necesitamos:
Registros: 74LS116.
ALU: 74LS181.
Acumulador: 74LS194.
Circuito de tercer estado: 74LS244.
Flip Flop tipo D: 74LS74.
Led´s, para visualizar el recorrido que hacen el conjunto de datos.
Las Líneas de +5V y GND.
La Líneas de datos que constituyen el bus del sistema.
Switch controlados desde teclado para manejar las unidades de control.
Las unidades de control, son por ejemplo, el clock, los modos de selección de
las ALU, el tipo de desplazamiento del acumulador, se llaman unidades de
control debido a que a partir del estado de estás, el dispositivo actúa de una
forma ú otra.
Con las líneas de control, se pueden configurar los dispositivos electrónicos del
esquema para que realice las funciones que esperamos de él. Las unidades de
control dependen del tipo de dispositivo electrónico con el que se esté
trabajando, para ello es necesario, analizar la tabla del verdad del dispositivo
electrónico con el cual se trabaja.
6
7. El borrador del circuito electrónico es el siguiente:
El diagrama explica de manera general el proceso para construir el circuito
electrónico.
Si se observa con detalle el diagrama, se especifica que tipo de circuito
integrado se utiliza, y la numeración que lleva consigo corresponde al pin y su
modo de conexión con los más dispositivos que forman parte del esquema a
bloques.
7
9. Descripción de los dispositivos del circuito electrónico:
74LS116:
Este tipo de dispositivos se utiliza para el almacenamiento de los datos, es
decir, los registros. Para generar este tipo de almacenamiento de datos, es
necesario utilizar circuitos integrados 74LS116, que no son otra cosa que
registros, se utilizan para el almacenamiento temporal de los datos, en la
práctica, la parte de la memoria, esta constituida por este tipo de dispositivos
para el almacenamiento de los datos.
Vista del encapsulado:
Implementación en el circuito:
9
10. Tabla de verdad:
Funcionalidad:
La principal función de este dispositivo es poder almacenar en ellos los datos,
con la característica de no perderlos a consecuencia del estado del bus, sino
que el nosotros podamos decir que es lo que debe de contener el registro y
modificarlo a nuestras necesidades.
74LS181:
Este dispositivo corresponde a la Unidad Aritmética Lógica, que es la
encargada de realizar cualquier tipo de operaciones tanto aritméticas como
lógicas. Los datos con los cuales se realizan las operaciones, en este caso,
están almacenados en registros que tienen conexión directa con la Unidad
Aritmética Lógica.
Es importante aclarar que la Unidad Aritmética Lógica es un circuito
combinacional, es decir el estado de su salida depende estrictamente del
estado de sus entradas, además no es ella quien realiza los desplazamientos,
para lo cual, se debe de implementar en el circuito otro tipo de dispositivo.
Otro punto importante, es que la ALU puede trabajar de dos modos en donde
sus entradas y salidas en alto ó bien entradas y salidas en bajo, se recomienda
trabajar en modo de entradas y salidas en alto, ya que es más entendible y fácil
de utilizar, mientras que el otro modo de entradas y salidas en bajo, cambia
totalmente la forma de introducir los datos, y la salida de los mismos.
Vista del encapsulado:
10
12. Funcionalidad:
La principal función de la Unidad Aritmética Lógica es el de realizar
operaciones tanto aritméticas ó lógicas con los contenidos de los registros.
74LS194:
Este dispositivo corresponde al acumulador, cuya implementación en el circuito
es necesaria, ya que como su nombre lo indica almacena temporalmente un
registro de datos, en este caso, el acumulador almacena temporalmente el
registro de datos de la salida de la ALU, es decir almacena los resultados de
las operaciones según la configuración de la ALU.
Además, es el responsable de realizar cualquier tipo de desplazamientos
(izquierda/derecha), para las operaciones de multiplicar ó dividir entre 2.
Vista del encapsulado:
Implementación en el circuito:
12
13. Tabla de verdad:
Funcionalidad:
La principal función del acumulador, como su nombre lo indica, es almacenar
temporalmente un registro de datos, además es el encargado de realizar los
desplazamientos hacia la izquierda o hacia la derecha. Para realizar los
desplazamientos es necesario analizar su tabla de verdad para configurar sus
entradas, y de ese modo realice la función que deseamos.
74LS244:
Este dispositivo corresponde al circuito de tercer estado, que es indispensable
en circuitos en donde se utilizan más de una línea, con el objetivo de activar
una línea a la vez y no existan problemas de pérdidas de datos o desvío de los
mismos, consecuentes de no administrar dichas líneas.
Este circuito es un claro ejemplo de utilizar más de una línea, debido a que el
bus utilizado en donde viajan los datos, es un “bus común”, lo que significa que
los datos que se encuentran en el bus pueden direccionarse a cualquier
dispositivo que se encuentre conectado en él.
Para tener un control del direccionamiento de estos datos, al transferirlo de
cualquier dispositivo a otro, es necesario primero colocarlos en el bus, y
posteriormente direccionarlo al registro destino. Por ejemplo, en la lectura y
escritura de datos en la memoria, es necesario activar las líneas de lectura o
escritura correspondiente a la acción que deseamos realizar, pero se activará
una línea a la vez, para evitar inconsistencia de datos y por ende perdida de los
mismos.
13
15. Funcionalidad:
La principal función del circuito de tercer estado es la de administrar las líneas,
en este caso las que se encuentran asociadas al bus, y a la memoria.
Realización de las microoperaciones en el circuito:
Programa #1:
Este programa tiene como objetivo introducir datos a la entrada, hay que
aclarar que el sistema numérico empleado en este circuito electrónico es el
sistema binario, por lo que los datos son datos binarios, desde la entrada,
proceso y hasta la salida.
Siguiendo el sistema binario, se debe de introducir datos en la entrada, y
transferir este registro de entrada a la localidad de memoria M1,
posteriormente, se vuelve a introducir un nuevo registro de entrada, que hará
una operación aritmética de suma con acarreo con los datos del registro de la
memoria M1, utilizando claramente la Unidad Aritmética Lógica, el resultado se
almacenara en el acumulador y posteriormente se transferirá al registro de
salida.
Microoperaciones:
START
MOV M1, ENT
ADD ENT, M1
M1
acumulador.
MOV SAL, AC
END
Almacena la entrada en la memoria M1.
Operación de suma con el contenido de la memoria
con la entrada y el resultado lo guarda en
Transfiere el contenido del acumulador a la salida.
Proceso en el circuito:
Lo primero que hay que hacer, antes de empezar a introducir datos, es
verificar que este activada el circuito de tercer estado en la línea de lectura (0),
y que el circuito de tercer estado de la memoria se encuentren desactivadas.
Después se debe de introducir los datos, activando o desactivando los
switch de entrada, hay que recordar que el sistema numeración que
empleamos es el sistema binario.
Una vez que introducimos los datos, hay que activar el reloj del registro de
entrada para que los datos pasen de este registro al circuito de tercer estado
del bus. El reloj del registro de entrada debe permanecer en alto, hasta que los
datos se almacenen en algún registro, ya que si se baja, se pierden totalmente
los datos de entrada.
15
16. Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
El siguiente paso, según el programa, es almacenar los datos de entrada en
la localidad de memoria M1, por lo que se debe activar el registro M1, y para
que los datos no sean modificados por el estado del bus, es necesario poner un
“candado” para que los datos almacenados permanezcan estables.
Posteriormente, el programa dice que se tiene que introducir una nueva
entrada, por lo que es necesario configurar el circuito de tercer estado en la
línea de lectura (0), y bajar el reloj del registro de entrada, posteriormente
introducir los nuevos datos. Y desde ahí de vuelve a realizar los mismos pasos
hasta que los datos se encuentren en el bus.
Ya que los datos se encuentren en el bus, se van almacenar en el registro
A, para lo cual se activa el registro A y sin olvidar se poner se “candado”.
El siguiente paso es transferir los datos del registro de localidad de memoria
M1, para que sea sumado con los datos del registro A. Para lo cual, se debe
configurar el circuito de tercer estado de la memoria en la línea que controla la
salida del registro de la memoria M1 (X) , para que los datos pasen del registro
M1 al bus.
Una vez en el bus, se activa el registro B para que los datos se almacenen
en él y se pone su “candado”. Una vez que los datos se encuentren en el
registro B y se pone su “candado”, se configura el circuito de tercer estado de
la memoria y se desactiva la línea que controla la salida de M1.
Una vez que los datos que se sumarán se encuentren en el registro A y B,
es hora de configurar a la ALU, para que realice la operación de suma con
acarreo según su tabla de verdad, las entradas S3 a S0: HBBH, y como es una
operación aritmética A plus B , M=B y C=H deben de estar así.
Una vez que se realizó la suma aritmética con acarreo A plus B, el registro
de salida de la ALU F3 a F0 son la entrada del acumulador, pero para que el
acumulador pase sus entradas tal y como entran a su salida tiene que también
estar bien configurada, las entradas CL=H, S0, S=1=H, deben de estar así, y
para que los datos pasen del acumulador al bus, es necesario activar su reloj
con una subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la salida, por lo que
se activa la línea de lectura (0) del circuito de tercer estado y también es
activado el reloj del registro de salida, y el registro de salida, va a ser
visualizado por led’s.
16
17. Programa #2:
Este programa tiene como objetivo introducir datos a la entrada, y transferir
este registro de entrada a la localidad de memoria M2, después, se vuelve a
introducir un nuevo registro de entrada que debe almacenarse en la localidad
de memoria M1, posteriormente una vez almacenados los datos en la memoria,
se realiza la operación lógica AND y el resultado se almacenara en el
acumulador y posteriormente se transferirá al registro de salida.
Microoperaciones:
START
MOV M2, ENT
MOV M1, ENT
AND M1, M2
M1
acumulador.
MOV SAL, AC
END
Almacena la entrada en la memoria M2.
Almacena la entrada en la memoria M1.
Operación AND con los contenidos de la memoria
con M2 y el resultado lo guarda en el
Transfiere el contenido del acumulador a la salida.
Proceso en el circuito:
Lo primero que hay que hacer, antes de empezar a introducir datos, es
verificar que este activada el circuito de tercer estado en la línea de lectura (0),
y que el circuito de tercer estado de la memoria se encuentren desactivadas.
Después se debe de introducir los datos, activando o desactivando los
switch de entrada. Una vez que introducimos los datos, hay que activar el reloj
del registro de entrada para que los datos pasen de este registro al circuito de
tercer estado del bus. El reloj del registro de entrada debe permanecer en alto,
hasta que los datos se almacenen en algún registro, ya que si se baja, se
pierden totalmente los datos de entrada.
Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
El siguiente paso, según el programa, es almacenar los datos de entrada en
la localidad de memoria M2, por lo que se debe activar el registro M2, y para
que los datos no sean modificados por el estado del bus, es necesario poner un
“candado” para que los datos almacenados permanezcan estables.
Posteriormente, se tiene que introducir una nueva entrada, por lo que es
necesario configurar el circuito de tercer estado en la línea de lectura (0), y
bajar el reloj del registro de entrada, posteriormente introducir los nuevos datos.
Y desde ahí de vuelve a realizar los mismos pasos hasta que los datos se
encuentren en el bus
17
18.
Ya que los datos se encuentren en el bus, se van almacenar en la localidad
de memoria M1, por lo que se debe activar el registro M1, y se pone su
“candado” para que los datos almacenados permanezcan estables.
El siguiente paso es realizar la operación AND y para lo cual los contenidos
de las localidades de memoria deben estar almacenados en el registro A y B
para poder hacer la operación AND en la ALU. Por lo que sigue es transferir los
datos del registro de localidad de memoria M1 al registro A. Para lo cual, se
debe configurar el circuito de tercer estado de la memoria en la línea que
controla la salida del registro de la memoria M1 (X), para que los datos pasen
del registro M1 al bus.
Una vez en el bus, se activa el registro A para que los datos se almacenen
en él y se pone su “candado”. Una vez almacenados los datos en el registro A,
se desactiva la línea que controla la salida de M1.
Ahora se debe de transferir los datos del registro de localidad de memoria
M2 al registro B. Para lo cual, se debe configurar el circuito de tercer estado de
la memoria en la línea que controla la salida del registro de la memoria M2 (Z),
para que los datos pasen del registro M2 al bus.
Una vez en el bus, se activa el registro B para que los datos se almacenen
en él y se pone su “candado”. Una vez que los datos se encuentren en el
registro B, desactiva la línea que controla la salida de M2.
Una vez que los datos que se sumarán se encuentren en el registro A y B,
es hora de configurar a la ALU, para que realice la operación lógica AND,
según su tabla de verdad, las entradas S3 a S0: HBHH, y como es una
operación lógica AB, M=H deben de estar así.
Una vez que se realizó la operación lógica AND (AB), el registro de salida
de la ALU F3 a F0 son la entrada del acumulador, pero para que el acumulador
pase sus entradas tal y como entran a su salida tiene que también estar bien
configurada, las entradas CL=H, S0, S=1=H, deben de estar así, y para que los
datos pasen del acumulador al bus, es necesario activar su reloj con una
subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la salida, por lo que
se activa la línea de lectura (0) del circuito de tercer estado y también es
activado el reloj del registro de salida, y el registro de salida, va a ser
visualizado por led’s.
18
19. Programa #3:
Este programa tiene como objetivo introducir datos a la entrada, y transferir
este registro de entrada a la localidad de memoria M1, después, se vuelve a
introducir un nuevo registro de entrada que debe almacenarse en la localidad
de memoria M2, posteriormente una vez almacenados los datos en la memoria,
se realiza la operación de suma ADD y el resultado se almacenara en el
acumulador y posteriormente se transferirá al registro de la localidad de
memoria M2.
Después se vuelve a introducir una nueva entrada de datos y se realiza una
operación de suma con el contenido del registro de la localidad de memoria
M2, el resultado se almacenará en acumulador y posteriormente se transferirá
a la salida.
Posteriormente se introducirá un nuevo conjunto de datos de entrada y se
multiplicará por 2 y el resultado se almacenará en el acumulador que
posteriormente se transferirá a la salida.
Consecutivamente, se introducirá una nueva entrada y se dividirá entre 2 y el
resultado obtenido se almacenará en el acumulador y posteriormente se
transferirá a la salida.
Microoperaciones:
START
MOV M1, ENT
MOV M2, ENT
ADD M1, M2
MOV M2, AC
ADD M2, ENT
MOV SAL, AC
MUL ENT, #2
DIV ENT, #2
MOV M1, AC
MOV SAL, M1
Almacena la entrada en la memoria M2.
Almacena la entrada en la memoria M1.
Operación de suma con los contenidos de la memoria
M1 con M2 y el resultado lo guarda en el acumulador.
Transfiere el contenido del acumulador a la localidad de
memoria M2.
Operación de suma con la entrada y el contenido de la
localidad de memoria M2, y el resultado se almacenará
en el acumulador.
Transfiere el contenido del acumulador a la salida.
Multiplica la entrada por 2 y el resultado se almacenará
en el acumulador.
Divide la entrada entre 2 y el resultado se almacenará
en el acumulador.
Transfiere el contenido del acumulador a la localidad de
memoria M1.
Transfiere el contenido de la localidad de memoria M1,
a la salida.
END
19
20. Proceso en el circuito:
Lo primero que hay que hacer, antes de empezar a introducir datos, es
verificar que este activada el circuito de tercer estado en la línea de lectura (0),
y que el circuito de tercer estado de la memoria se encuentren desactivadas.
Después se debe de introducir los datos, activando o desactivando los
switch de entrada. Una vez que introducimos los datos, hay que activar el reloj
del registro de entrada para que los datos pasen de este registro al circuito de
tercer estado del bus. El reloj del registro de entrada debe permanecer en alto,
hasta que los datos se almacenen en algún registro, ya que si se baja, se
pierden totalmente los datos de entrada.
Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
El siguiente paso, según el programa, es almacenar los datos de entrada en
la localidad de memoria M1, por lo que se debe activar el registro M1, y para
que los datos no sean modificados por el estado del bus, es necesario poner un
“candado” para que los datos almacenados permanezcan estables.
Posteriormente, se tiene que introducir una nueva entrada, por lo que es
necesario configurar el circuito de tercer estado en la línea de lectura (0), y
bajar el reloj del registro de entrada, posteriormente introducir los nuevos datos.
Y desde ahí de vuelve a realizar los mismos pasos hasta que los datos se
encuentren en el bus.
Ya que los datos que se encuentren en el bus, se van almacenar en la
localidad de memoria M2, se debe activar el registro M2, y se pone su
“candado” para que los datos almacenados permanezcan estables.
El siguiente paso es realizar la operación ADD y para lo cual los contenidos
de las localidades de memoria deben estar almacenados en el registro A y B
para poder hacer la operación AND en la ALU.
Por lo que sigue es transferir los datos del registro de localidad de memoria
M1 al registro A. Para lo cual, se debe configurar el circuito de tercer estado de
la memoria en la línea que controla la salida del registro de la memoria M1 (X),
para que los datos pasen del registro M1 al bus.
Una vez en el bus, se activa el registro A para que los datos se almacenen
en él y se pone su “candado”. Una vez almacenados los datos en el registro A,
se desactiva la línea que controla la salida de M1.
20
21. Ahora se debe de transferir los datos del registro de localidad de memoria
M2 al registro B. Para lo cual, se debe configurar el circuito de tercer estado de
la memoria en la línea que controla la salida del registro de la memoria M2 (Z),
para que los datos pasen del registro M2 al bus.
Una vez en el bus, se activa el registro B para que los datos se almacenen
en él y se pone su “candado”. Una vez que los datos se encuentren en el
registro B, desactiva la línea que controla la salida de M2.
Una vez que los datos que se sumarán se encuentren en el registro A y B,
es hora de configurar a la ALU, para que realice la operación aritmética de
suma con acarreo (A plus B) según su tabla de verdad, las entradas S3 a S0:
HBBH, y como es una operación aritmética M=B y C=H deben de estar así.
Una vez que se realizó la operación aritmética de suma con acarreo (A plus
B), el registro de salida de la ALU F3 a F0 son la entrada del acumulador, pero
para que el acumulador pase sus entradas tal y como entran a su salida tiene
que también estar bien configurada, las entradas CL=H, S0, S=1=H, deben de
estar así, y para que los datos pasen del acumulador al bus, es necesario
activar su reloj con una subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la localidad de
memoria M2, pero hay que recordar que M2, ya tiene un dato almacenado, y
para borrarlo y almacenar el nuevo registro de datos, es necesario bajar
primero a M2 y luego su candado y posteriormente hay que activar a M2 para
almacenar el nuevo registro de datos y también hay que subir su “candado”,
para evitar perdida de estos datos.
Posteriormente, el programa dice que se tiene que introducir una nueva
entrada, por lo que es necesario configurar el circuito de tercer estado en la
línea de lectura (0), y bajar el reloj del registro de entrada, posteriormente
introducir los nuevos datos.
Una vez que introducimos los datos, hay que activar el reloj del registro de
entrada para que los datos pasen de este registro al circuito de tercer estado
del bus. El reloj del registro de entrada debe permanecer en alto, hasta que los
datos se almacenen en algún registro, ya que si se baja, se pierden totalmente
los datos de entrada.
Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
21
22.
Ya que los datos se encuentren en el bus, se van almacenar en el registro
A, pero hay que recordar que el registro A, ya tiene un dato almacenado, y para
borrarlo y almacenar el nuevo registro de datos, es necesario bajar primero A y
luego su candado y posteriormente hay que activar al registro A para
almacenar el nuevo registro de datos y también hay que subir su “candado”,
para evitar perdida de estos datos.
El siguiente paso es transferir los datos del registro de localidad de memoria
M2, para que sea sumado con los datos del registro A. Para lo cual, se debe
configurar el circuito de tercer estado de la memoria en la línea que controla la
salida del registro de la memoria M2 (Z), para que los datos pasen del registro
M2 al bus.
Una vez en el bus, se activa el registro B, pero hay que recordar que el
registro B, ya tiene un dato almacenado, y para borrarlo y almacenar el nuevo
registro de datos, es necesario bajar primero a B y luego su candado y
posteriormente hay que activar a B para almacenar el nuevo registro de datos y
también hay que subir su “candado”, para evitar perdida de estos datos. Una
vez que los datos se encuentren en el registro B y se pone su “candado”, se
configura el circuito de tercer estado de la memoria y se desactiva la línea que
controla la salida de M2.
Una vez que los datos que se sumarán se encuentren en el registro A y B,
es hora de configurar a la ALU, para que realice la operación de suma con
acarreo según su tabla de verdad, las entradas S3 a S0: HBBH, y como es una
operación aritmética A plus B , M=B y C=H deben de estar así.
Una vez que se realizó la suma aritmética con acarreo A plus B, el registro
de salida de la ALU F3 a F0 son la entrada del acumulador, pero para que el
acumulador pase sus entradas tal y como entran a su salida tiene que también
estar bien configurada, las entradas CL=H, S0, S=1=H, deben de estar así, y
para que los datos pasen del acumulador al bus, es necesario activar su reloj
con una subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la salida, por lo que
se activa la línea de lectura (0) del circuito de tercer estado y también es
activado el reloj del registro de salida, y el registro de salida, va a ser
visualizado por led’s.
Siguiendo las instrucciones del programa, nos dice que debemos de
introducir una nueva entrada, por lo que es necesario configurar el circuito de
tercer estado en la línea de lectura (0), y bajar el reloj del registro de entrada,
posteriormente introducir los nuevos datos.
22
23. Una vez que introducimos los datos, hay que activar el reloj del registro de
entrada para que los datos pasen de este registro al circuito de tercer estado
del bus. El reloj del registro de entrada debe permanecer en alto, hasta que los
datos se almacenen en algún registro, ya que si se baja, se pierden totalmente
los datos de entrada.
Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
Una vez en el bus, se activa el registro A, pero hay que recordar que el
registro A, ya tiene un dato almacenado, y para borrarlo y almacenar el nuevo
registro de datos, es necesario bajar primero A y luego su candado y
posteriormente hay que activar A para almacenar el nuevo registro de datos y
también hay que subir su “candado”, para evitar perdida de estos datos.
Posteriormente se configura la ALU, para que los datos pasen tal y como
están en el registro A al acumulador, para hacer el desplazamiento. Para lo
cual la ALU tiene que tener S3 a S0: BBBB, y como es una operación
aritmética A, M=B y C=H deben de estar así.
Una vez que se realizó la operación de transferir A tal y como está, el
registro de salida de la ALU F3 a F0 son la entrada del acumulador, pero para
que el acumulador pase sus entradas tal y como entran a su salida tiene que
también estar bien configurada, las entradas CL=H, S0, S=1=H, deben de estar
así, y para que los datos pasen del acumulador al bus, es necesario activar su
reloj con una subida y bajada.
El programa dice que la entrada la debemos de multiplicar por 2, por lo que
significa que haremos un desplazamiento a la izquierda, hasta este momento el
acumulador contiene A, y para hacer el desplazamiento a la izquierda se
requiere configurar el acumulador según su tabla de verdad, las entradas
CL=H, S0=H, S1=B, SR=B deben de estar así y para que el desplazamiento
surja efecto se debe de activar el reloj con una subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la salida, por lo que
se activa la línea de lectura (0) del circuito de tercer estado y también es
activado el reloj del registro de salida, y el registro de salida, va a ser
visualizado por led’s.
Siguiendo las instrucciones del programa, nos dice que debemos de
introducir una nueva entrada, por lo que es necesario configurar el circuito de
tercer estado en la línea de lectura (0), y bajar el reloj del registro de entrada,
posteriormente introducir los nuevos datos.
23
24. Una vez que introducimos los datos, hay que activar el reloj del registro de
entrada para que los datos pasen de este registro al circuito de tercer estado
del bus. El reloj del registro de entrada debe permanecer en alto, hasta que los
datos se almacenen en algún registro, ya que si se baja, se pierden totalmente
los datos de entrada.
Posteriormente se activa, el circuito de tercer estado del bus en la línea de
escritura (1), para que los datos de entrada pasen a bucear al bus, y desde ahí
puedan ser “jalados” para almacenarse en algún registro.
Una vez en el bus, se activa el registro B, pero hay que recordar que el
registro B, ya tiene un dato almacenado, y para borrarlo y almacenar el nuevo
registro de datos, es necesario bajar primero B y luego su candado y
posteriormente hay que activar A para almacenar el nuevo registro de datos y
también hay que subir su “candado”, para evitar perdida de estos datos.
Posteriormente se configura la ALU, para que los datos pasen tal y como
están en el registro B al acumulador, para hacer el desplazamiento. Para lo
cual la ALU tiene que tener S3 a S0: HBHB, y como es una operación lógica B,
M=H deben de estar así.
Una vez que se realizó la operación de transferir B tal y como está, el
registro de salida de la ALU F3 a F0 son la entrada del acumulador, pero para
que el acumulador pase sus entradas tal y como entran a su salida tiene que
también estar bien configurada, las entradas CL=H, S0, S=1=H, deben de estar
así, y para que los datos pasen del acumulador al bus, es necesario activar su
reloj con una subida y bajada.
El programa dice que la entrada la debemos de dividir entre 2, por lo que
significa que haremos un desplazamiento a la derecha, hasta este momento el
acumulador contiene B, y para hacer el desplazamiento a la derecha se
requiere configurar el acumulador según su tabla de verdad, las entradas
CL=H, S0=B, S1=H, SL=B deben de estar así y para que el desplazamiento
surja efecto se debe de activar el reloj con una subida y bajada.
Los datos van al pasar del acumulador al circuito de tercer estado y para
que los datos pasen al bus, se activara la línea que controla la salida (P), para
que los datos pasen a bucear al bus.
Una vez en el bus, los datos van a ser transferidos a la a la localidad de
memoria M1, pero hay que recordar que M1, ya tiene un dato almacenado, y
para borrarlo y almacenar el nuevo registro de datos, es necesario bajar
primero a M1 y luego su candado y posteriormente hay que activar a M1 para
almacenar el nuevo registro de datos y también hay que subir su “candado”,
para evitar perdida de estos datos.
Siguiendo con el proceso del programa, nos dice que se debe de transferir
el contenido de M1 a la salida, por lo que se debe configurar el circuito de
tercer estado de la memoria en la línea que controla la salida del registro de la
memoria M1 (X), para que los datos pasen del registro M1 al bus.
24
25. Una vez en el bus, los datos van a ser transferidos a la salida, por lo que
se activa la línea de lectura (0) del circuito de tercer estado y también es
activado el reloj del registro de salida, y el registro de salida, va a ser
visualizado por led’s.
25
26. Práctica # 2.- Ejecución de Instrucciones en un
microprocesador con arquitectura clásica
Objetivos:
Recursos de Software:
Utilizar los recursos del Lenguaje Ensamblador de un procesador real
Analizar la ejecución de instrucciones en un procesador con
arquitectura clásica
Wordpad, TurboAssembler, TurboLinker, TurboDebugger
Equipo:
Computadora Personal compatible con IBM PC
;***************************************************************************
; Nombre del programa: NADA.ASM
;***************************************************************************
; COMANDO DE ENSAMBLE : Tasm NADA.asm;
; COMANDO DE ENLACE
: TLink NADA;
; COMANDO DE EJECUCION : NADA [Enter]
;***************************************************************************
; Define el modelo de memoria
;
.MODEL SMALL
; Modelo de memoria
.STACK
; Se necesita una PILA.
.CODE
; Area de codigo
Empieza:
; Etiqueta de comienzo de programa
;-------------------------------------------------------------------------; El programa NO HACE NADA. Al ser ejecutado simplemente regresa
; el control a MS-DOS.
;-------------------------------------------------------------------------Mov Ax,4c00h
Int 21h
END Empieza
; Regresa a Ms-Dos por medio de la
; funcion 4c.
; Fin del programa
26
27. ;***************************************************************************
; Nombre del programa: MENSAJE.ASM
;***************************************************************************
; COMANDO DE ENSAMBLE : TASM MENSAJE;
; COMANDO DE ENLACE
: TLINK MENSAJE;
; COMANDO DE EJECUCION : MENSAJE [Enter]
;***************************************************************************
;
; Define el modelo de memoria
;
.MODEL SMALL
; Declara Modelo de memoria
.DATA
; Inicia Segmento de datos
Mensaje DB 'Hola, que tal !.$'
; Define Cadena a desplegar
.STACK
; Declara el Stack
.CODE
; Inicia Area de codigo
Empieza:
mov Ax, @Data
mov Ds, Ax
mov Dx, Offset Mensaje
mov Ah, 9
Int 21h
mov ax,4c00h
int 21h
END Empieza
; Etiqueta de comienzo de programa
; Inicializa DS con la
; direccion de @Data
; Direccion de Mensaje
; en Dx para poder desplegarlo
; a traves de la Int 21 de MS-DOS.
; Regresa a MS-DOS por medio de la
; funcion 4c.
; Fin del programa
27
28. ;**************************************************************************
; Nombre del programa: HEXA.ASM
; Objetivo
: Despliega el titulo del programa y los numeros
;
hexadecimales correspondientes del 15 al 1 en
;
forma de escalera.
;**************************************************************************
; COMANDO DE ENSAMBLE : Tasm HEXA;
; COMANDO DE ENLACE
: Tlink HEXA;
; COMANDO DE EJECUCION : HEXA [Enter]
;**************************************************************************
; -------------------------------------------------------------------; INICIA EL PROGRAMA. SE DEFINE EL MODELO DE MEMORIA A USAR
; -------------------------------------------------------------------.MODEL
SMALL
; Modelo de memoria
; -------------------------------------------------------------------; INICIA SEGMENTO DE DATOS
; -------------------------------------------------------------------.DATA
; Segmento de datos
Mensaje DB 13,10,13,10
DB 'Desplegando los numeros hexadecimales del 15 al 1'
DB 13,10,13,10,'$'
; Cadena a desplegar
Tabla DB '0123456789ABCDEF'; Tabla de traduccion
; -------------------------------------------------------------------; INICIA SEGMENTO DE PILA
; -------------------------------------------------------------------.STACK
; Se necesita una PILA.
; -------------------------------------------------------------------; SE DEFINE EL SEGMENTO DE CODIGO
; -------------------------------------------------------------------.CODE
; Area de codigo
Empieza:
Mov Ax, @Data
Mov Ds, Ax
Mov Dx, OFFSET Mensaje
Mov Ah, 9
Int 21h
Mov Cx, 15
Mov Bx, OFFSET Tabla
Itera:
Mov Al, Cl
Xlat
Mov Dl, Al
Mov Ah, 2
Int 21h
Mov Dl, 10
Int 21h
Loop Itera
; Etiqueta de comienzo de programa
; Permite el acceso a los datos inicializando
; el registro DS con la direccion adecuada.
; Carga la direccion de mensaje a DX para
; poder desplegarlo con la funcion 9 de la
; Int 21h (DS:DX contiene la direccion de
; la cadena que se desplegara).
; Contador de los numeros (van a ser 15).
; Permite acceso a la tabla de equivalencias
; hexadecimales inicializando su direccion
; y apuntando al primer elemento.
; Etiqueta controladora de las iteraciones
; Pone en Al el numero a traducir
; (empezando desde 15) y lo traduce.
; Prepara para desplegar el numero usando la
; funcion 2 de la Int 21h. Dl debe de tener
; el caracter a ser desplegado.
; Salta una linea dando un efecto de
; escalera. De nuevo se usa la funcion 2.
; Itera hasta llegar a 0 (de 15 a 0). El
; registro CX mantiene una cuenta activa de
; las veces que se ha iterado, y al completar
28
29. Mov ax,4c00h
int 21h
END Empieza
; un ciclo se decrementa en uno hasta llegar
; a cero.
; Regresa a MS-DOS por medio de la funcion
; 4c de la interrupcion 21h.
; El codigo de regreso es 0 porque no hubo
; error. En caso de existir se podria pasar
; un código diferente a 0 (ej. 4c01h).
; Fin del programa
29
30. Programa #1:
Este programa tiene como objetivo introducir no hacer nada, como su nombre
lo indica, lo que hace realmente es simplemente regresar el control al MS-DOS.
Escribiendo el programa en el editor de texto:
Como primer paso a ejecutar es copiar el programa de la práctica en el editor
de texto ‘Wordpad’, por lo que tenemos que abrirlo:
Una vez abierto el editor de texto, se captura el programa ‘nada’:
Una vez capturado el programa se guarda en la siguiente dirección:
c:tasmbin, asignándole un nombre, en este caso se asigna: ‘nada’ con la
extensión .asm, con el motivo que pueda ser reconocido por el ensamblador
TurboAssembler, la extensión .asm TurboAssembler lo reconoce como el
código fuente.
30
31. Situándose en la dirección:
El siguiente paso es el del ensamblado, por lo que se debe abrir el MS-DOS
(símbolo del sistema):
El entorno de trabajo del MS-DOS (símbolo del sistema) es el siguiente, lo que
se ve que esa pantalla obscura causa aún más temor al usar el ensamblador,
ya que entorno no es nada amigable con el usuario.
31
32. OBSERVACION:
Cuando se abre el símbolo del sistema, aparece la siguiente ruta, y habrá
problemas, ya que la carpeta de TASM se copió en la unidad C, por lo que se
soluciona el problema copiando la carpeta TASM en la dirección que especifica
la ventana. El programa de ‘nada’ que se elaboró en Wordpad no tendrá
problemas, con la dirección, ya que se copió toda la carpeta que lo contenía.
El siguiente paso es situarnos dentro de la carpeta TASM, después de
cambiarla de dirección, por lo que ejecutamos la siguiente línea:
Pero resulta que dentro de la carpeta TASM, existen más carpetas y los
códigos fuentes se encuentran dentro de la carpeta BIN, por lo que debemos
incluir esta carpeta en la dirección, para lo cual ejecutamos la siguiente
instrucción:
32
33. Verificando la escritura de nuestro código fuente:
Ahora ya que nos situamos en esa dirección vamos, vamos a extraer el código
fuente, que escribimos con extensión .asm. Para lo cual escribimos la siguiente
instrucción:
Inmediatamente se nos aparecerá la siguiente ventana, donde nos muestra el
archivo que creamos, y desde ahí podemos hacer modificaciones, imprimirlo,
etc.
Para salir de esta ventana y regresar al MS-DOS, vamos al menú Archivo y
tiene una opción de Salir.
33
34. Ensamblando nuestro código fuente nada.asm:
El siguiente paso es el ensamblado del archivo fuente con extensión .asm, es
decir el archivo nada.asm, para ensamblarlo escribimos el nombre de la
directiva TASM seguido del nombre del código fuente con extensión .asm:
Después de dar enter, se desplegara un listado donde muestra el archivo
ensamblado, si hay errores muestra el numero de errores, en caso existen
cero errores, también aparece si hay peligros y algo interesante la memoria
que ocupa.
OBSERVACION:
El hecho de ensamblar un código fuente, significa que vamos a generar un
código objeto. Al ensamblar nuestro código fuente nada.asm, nos dimos cuenta
que se generó código objeto dentro de la carpeta BIN, con el nombre el mismo
nombre pero ahora con extensión .obj, es decir nada.obj.
Abriendo el archivo nada.lst:
Según la práctica el siguiente paso es abrir el archivo nada.lst, para analizarlo,
inmediatamente apareció la siguiente ventana:
34
35. OBSERVACION:
Nos dimos cuenta que el ejecutar esa instrucción y al abrir el archivo nada.lst,
ese archivo contenía información general del programa, como es el numero de
líneas del programa, así como las localidades de memoria que fueron son
utilizadas por el programa, los operandos, nemonicos utilizados, etc..
Así mismo la fecha, nombre del archivo, y hora de que creo el archivo de
código fuente ‘nada.asm’, también la versión del ensamblador, el tamaño del
archivo, y algo muy importante las características de los segmentos utilizados.
También nos dimos cuenta que si ejecutábamos la instrucción pero sin la
palabra edit, y dar enter se nos abría una ventana donde nos pedía seleccionar
un programa de aplicación, elegimos el Wordpad y se nos apareció la misma
información pero en la ventana de Wordpad.
Enlazando el programa nada.obj:
El siguiente paso es enlazar el código objeto nada.obj lo que significa que
ahora generaremos un código ejecutable con extensión .ese, por lo que
debemos de ejecutar en enlazado con la directita TLINK, con la siguiente
instrucción:
OBSERVACION:
En este momento se creo un programa ejecutable con el nombre de nada.exe,
la extensión .ese significa un programa ejecutable, y para verificar que
realmente lo haya creado, debemos de ir a la carpeta BIN y ahí estará el
archivo nada.exe.
Ejecutando el programa nada.exe:
El siguiente paso es ejecutar el programa nada.exe, por lo que escribimos la
siguiente instrucción:
35
36. OBSERVACION:
Al momento de dar enter, el ensamblador crea una aplicación llamada nada.
Que posteriormente va a ser el que se va a ejecutar.
Ejecutando el programa de aplicación nada:
Ahora es el momento de ejecutar el programa de aplicación, para lo cual
escribimos la siguiente instrucción:
OBSERVACION:
Al momento de dar enter, el programa pues si cumple con su objetivo, ya que
no realiza nada, solamente se llega a ver un ligero pantallaso. Pero en realidad
si hace algo, toma el control y después se lo devuelve al MS-DOS.
36
37. Programa #2:
Este programa tiene como objetivo introducir un mensaje, para que a la hora de
ejecutar la aplicación muestre dicho mensaje en pantalla.
Escribiendo el programa en el editor de texto:
Realizamos los mismos pasos que en el programa anterior, por lo que tenemos
que abrir el editor de texto Wordpad y escribir el programa mensaje:
Una vez capturado el programa lo guardaremos en la dirección: c:tasmbin,
asignándole el nombre: ‘mensaje’ con la extensión .asm, con el motivo que
pueda ser reconocido como código fuente por el ensamblador TurboAssembler:
Abrir el símbolo del sistema:
Una vez abierto el símbolo del sistema, debemos situarnos en la carpeta
TASMBIN, para lo cual escribimos las siguientes instrucciones:
Verificando la escritura de nuestro código fuente:
Ahora ya que nos situamos en esa dirección vamos, vamos a extraer el código
fuente, que escribimos con extensión .asm. Para lo cual escribimos la siguiente
instrucción:
EDIT NADA.ASM
Inmediatamente se nos aparecerá la siguiente ventana, donde nos muestra el
archivo que creamos, y desde ahí podemos hacer modificaciones, imprimirlo,
etc.
37
38. Ensamblando nuestro código fuente mensaje.asm:
El siguiente paso es el ensamblado del archivo fuente con extensión .asm, es
decir el archivo mensaje.asm, para ensamblarlo escribimos el nombre de la
directiva TASM seguido del nombre del código fuente con extensión .asm:
Después de dar enter, se desplegara un listado donde muestra el archivo
ensamblado, si hay errores muestra el numero de errores, en caso existen
cero errores, también aparece si hay peligros y algo interesante la memoria
que ocupa.
OBSERVACION:
El hecho de ensamblar un código fuente, significa que vamos a generar un
código objeto. Al ensamblar nuestro código fuente mensaje.asm, nos dimos
cuenta que se generó código objeto dentro de la carpeta BIN, con el nombre el
mismo nombre pero ahora con extensión .obj, es decir mensaje.obj.
38
39. Abriendo el archivo mensaje.lst:
Según la práctica el siguiente paso es abrir el archivo mensaje.lst, para
analizarlo, por lo que ejecutamos la siguiente instrucción:
Inmediatamente apareció la siguiente ventana:
OBSERVACION:
Nos dimos cuenta que el ejecutar esa instrucción y al abrir el archivo
mensaje.lst, ese archivo contenía información general del programa, como es
el numero de líneas del programa, así como las localidades de memoria que
fueron son utilizadas por el programa.
Así mismo la fecha, nombre del archivo, y hora de que creo el archivo de
código fuente ‘nada.asm’, también la versión del ensamblador, el tamaño del
archivo, y algo muy importante las características de los segmentos utilizados.
39
40. También nos dimos cuenta que si ejecutábamos la instrucción pero sin la
palabra edit, y dar enter se nos abría una ventana donde nos pedía seleccionar
un programa de aplicación, elegimos el Wordpad y se nos apareció la misma
información pero en la ventana de Wordpad.
Enlazando el programa mensaje.obj:
El siguiente paso es enlazar el código objeto mensaje.obj lo que significa que
ahora generaremos un código ejecutable con extensión .exe, por lo que
debemos de ejecutar en enlazado, con la directiva TLINK, con la siguiente
instrucción:
OBSERVACION:
En este momento se creo un programa ejecutable con el nombre de
mensaje.exe, la extensión .exe significa un programa ejecutable, y para
verificar que realmente lo haya creado, debemos de ir a la carpeta BIN y ahí
estará el archivo mensaje.exe.
Ejecutando el programa mensaje.exe:
El siguiente paso es ejecutar el programa mensaje.exe, por lo que escribimos
la siguiente instrucción:
40
41. OBSERVACION:
Al momento de dar enter, el ensamblador crea una aplicación llamada mensaje.
Y nos damos cuenta que se visualizo un mensaje,
Ejecutando el programa de aplicación mensaje:
Ahora es el momento de ejecutar el programa de aplicación, para lo cual
escribimos la siguiente instrucción:
OBSERVACION:
Al momento de dar enter, el programa si cumple con su objetivo, ya que
muestra el mensaje que escribimos en el programa.
41
42. Programa #3:
Este programa tiene como objetivo desplegar un titulo y los números
hexadecimales correspondientes del 15 al 1 en forma de escalera.
Escribiendo el programa en el editor de texto:
Abrimos el editor de texto Wordpad y escribir el programa hexa:
Una vez capturado el programa lo guardaremos en la dirección: c:tasmbin,
asignándole el nombre: ‘mensaje’ con la extensión .asm, con el motivo que
pueda ser reconocido como código fuente por el ensamblador TurboAssembler:
42
43. Abrir el símbolo del sistema:
Una vez abierto el símbolo del sistema, debemos situarnos en la carpeta
TASMBIN, para lo cual escribimos las siguientes instrucciones:
Verificando la escritura de nuestro código fuente:
Ahora ya que nos situamos en esa dirección vamos, vamos a extraer el código
fuente, que escribimos con extensión .asm. Para lo cual escribimos la siguiente
instrucción:
Inmediatamente se nos aparecerá la siguiente ventana, donde nos muestra el
archivo que creamos, y desde ahí podemos hacer modificaciones, imprimirlo,
etc.
43
44. Ensamblando nuestro código fuente hexa.asm:
El siguiente paso es el ensamblado del archivo fuente con extensión .asm, es
decir el archivo hexa.asm, para ensamblarlo escribimos el nombre de la
directiva TASM seguido del nombre del código fuente con extensión .asm:
Después de dar enter, se desplegara un listado donde muestra el archivo
ensamblado, si hay errores muestra el numero de errores, en caso existen
cero errores, también aparece si hay peligros y algo interesante la memoria
que ocupa.
OBSERVACION:
El hecho de ensamblar un código fuente, significa que vamos a generar un
código objeto. Al ensamblar nuestro código fuente hexa.asm, nos dimos cuenta
que se generó código objeto dentro de la carpeta BIN, con el nombre el mismo
nombre pero ahora con extensión .obj, es decir hexa.obj.
44
45. Abriendo el archivo hexa.lst:
Según la práctica el siguiente paso es abrir el archivo hexa.lst, para analizarlo,
por lo que ejecutamos la siguiente instrucción:
Inmediatamente apareció la siguiente ventana:
OBSERVACION:
Nos dimos cuenta que el ejecutar esa instrucción y al abrir el archivo hexa.lst,
ese archivo contenía información general del programa, como es el numero de
líneas del programa, así como las localidades de memoria que fueron son
utilizadas por el programa.
Así mismo la fecha, nombre del archivo, y hora de que creo el archivo de
código fuente ‘nada.asm’, también la versión del ensamblador, el tamaño del
archivo, y algo muy importante las características de los segmentos utilizados.
45
46. También nos dimos cuenta que si ejecutábamos la instrucción pero sin la
palabra edit, y dar enter se nos abría una ventana donde nos pedía seleccionar
un programa de aplicación, elegimos el Wordpad y se nos apareció la misma
información pero en la ventana de Wordpad.
Enlazando el programa hexa.obj:
El siguiente paso es enlazar el código objeto hexa.obj lo que significa que
ahora generaremos un código ejecutable con extensión .exe, por lo que
debemos de ejecutar en enlazado con la directiva TLINK, con la siguiente
instrucción:
OBSERVACION:
En este momento se creo un programa ejecutable con el nombre de hexa.exe,
la extensión .exe significa un programa ejecutable, y para verificar que
realmente lo haya creado, debemos de ir a la carpeta BIN y ahí estará el
archivo hexa.exe.
Ejecutando el programa hexa.exe:
El siguiente paso es ejecutar el programa hexa.exe, por lo que escribimos la
siguiente instrucción:
46
47. OBSERVACION:
Al momento de dar enter, el ensamblador crea una aplicación llamada hexa. Y
nos damos cuenta que se cumplió el objetivo del programa.
Ejecutando el programa de aplicación hexa:
Ahora es el momento de ejecutar el programa de aplicación, para lo cual
escribimos la siguiente instrucción:
OBSERVACION:
Al momento de dar enter, el programa si cumple con su objetivo, ya que
muestra un titulo, y los números hexadecimales en una lista escalonada.
47
48. Práctica # 3.- Verificación de los elementos que integran la
arquitectura de una computadora comercial
utilizando software especializado
OBJETIVO(S):
Analizar el estado de los componentes que conforman una computadora
utilizando programas de verificación de equipos de cómputo.
Verificar la ejecución paso a paso de un programa.
Observar los mensajes que muestra la ejecución del programa.
Recursos de Software:
CheckIt Diagnostics
.
EQUIPO:
Computadora portátil o de escritorio.
DIAGRAMAS:
Analizar el CPU del equipo de cómputo.
Analizar el la memoria principal del equipo de cómputo.
48
49. Apariencia del programa y vista principal, con este programa realizaremos el
análisis de las computadoras pertenecientes a los integrantes d el equipo.
Sección de INFORMACION del sistema.
Sección de INFORMACION del procesador
PRUEBA DEL PROCESADOR
Haga clic en el botón Iniciar para comenzar la Prueba del procesador. La
prueba incluye:
49
50.
Prueba de registro general: verifica los registros generales de la CPU.
Prueba de cálculos matemáticos: efectúa funciones aritméticas, tales
como cos, sen, exp, etc.
Prueba de rendimiento matemático: mide el rendimiento de las pruebas
antedichas.
Prueba aritmética MMX: mide el rendimiento de las instrucciones MMX.
Prueba de velocidad de la CPU: efectúa operaciones de división de
enteros de 16 bits y compara su rendimiento con una tabla de referencia
de velocidad.
Termino del proceso de análisis del procesador…
Sección de INFORMACION de la memoria
50
51. PRUEBA DE MEMORIA
Haga clic en el botón Iniciar para comenzar la Prueba de memoria. La prueba
incluye:
Prueba del patrón de datos: lee y escribe la memoria con diversos
patrones de datos.
Prueba de desplazamiento de unos: verifica la memoria utilizando el
algoritmo de desplazamiento de unos.
Prueba de inversión móvil: verifica la memoria utilizando el algoritmo de
desplazamiento de inversión.
Prueba de desplazamiento de ceros: verifica la memoria utilizando el
algoritmo de desplazamiento de ceros
Prueba de copia de bloque de memoria aleatoria: verifica la memoria
copiando y comparando un bloque de datos desde una posición de origen
a otra de destino, ambas aleatorias.
Sección de INFORMACION del audio del sistema
51
52. Información que se proporciona en la parte del audio del sistema:
Información de controladores.
Dispositivos de salida Wave.
Dispositivos de entrada Wave.
Dispositivos de salida MIDI.
Dispositivos de entrada MIDI
PRUEBA DE AUDIO
La Prueba de audio prueba los archivos de audio seleccionados (wave y/o
midi).
Si se produce un error o no se escucha música, puede revisar el cableado de
los altavoces e ir a la página de información para ver si están instalados los
controladores de sonido correctos.
Es posible que necesite hacer clic con el botón derecho del ratón en el icono
de altavoz en la bandeja del sistema para que aparezca la ventana Control de
volumen
a
fin
de
ajustar
la
salida
de
sonido.
Si está desactivada la opción Prueba de CD de audio, cerciórese de que haya
un CD de música en el CD-ROM antes de ejecutar la prueba.
Active o desactive las casillas Canal Izquierdo y Canal derecho para verificar
la
salida
de
sonido
de
cada
uno
de
dichos
canales.
Haga clic en el botón Reproductor de CD para ejecutar el reproductor de CD
de música incluido en CheckIt Diagnostics. Reproduce automáticamente la
primera pista de sonido. Cuando haya terminado, cierre la ventana de Prueba
de CD de audio.
Sección de PRUEBA del audio del equipo.
52
53. Sección de INFORMACION del video del equipo.
PRUEBA DE VÍDEO
La prueba de vídeo reproduce archivos de vídeo (AVI y/o MPEG). Haga clic en
el botón Seleccionar archivos para que aparezca la ventana Seleccionar
archivos de vídeo a fin de agregar o eliminar archivos de la lista de
reproducción.
En la ventana Seleccionar archivos de vídeo, haga clic en el botón Agregar
para añadir un nuevo archivo de prueba. Puede agregar hasta 10 archivos de
prueba. Haga clic en el botón Eliminar para borrar un archivo de prueba.
Haga clic en el botón Editar para seleccionar otro archivo de prueba y
reemplazar el actual. Haga clic en el botón Aceptar para confirmar los
cambios,
o
bien
en
Cancelar
para
dejarlos
sin
efecto.
Si se encuentra un error o no se reproduce vídeo, puede ir a la página de
información y ver si están instalados los controladores AVI y MPEG correctos.
Cerciórese de que los controladores de vídeo de Windows y ActiveMovie (o
Direct Show) estén instalados para poder reproducir archivos AVI y MPEG.
Sección de PRUEBA del video del equipo.
53
54. Sección de Prueba de video en la parte de reproducir archivo AVI
Sección de INFORMACION del MODEM
PRUEBA DE MÓDEM
Para comenzar la prueba de módem, haga clic en el botón Iniciar (para
cancelarla, haga clic en el botón Detener).
La prueba incluye:
Prueba de tono de marcar: detecta la conexión de la línea telefónica.
54
55.
Prueba de comando estándar: verifica diversos comandos AT estándar.
Prueba de comandos avanzados: verifica diversos comandos
avanzados.
Sección de INFORMACION de gráficos del equipo
Sección de PRUEBA de gráficos del equipo
PRUEBA DE GRÁFICOS
Haga clic en el botón Iniciar para comenzar la Prueba de gráficos.
Prueba de DirectSound: prueba si su sistema tiene la capacidad
DirectSound.
Prueba de Direct3D: prueba si su sistema tiene la capacidad Direct3D.
Prueba de DirectDraw: prueba si su sistema tiene la capacidad
DirectDraw.
Prueba de deformación de mapas de bits: prueba la función de
deformación de mapas de bits.
Prueba de dibujo de mapas de bits: prueba la función de dibujo de
mapas de bits.
Prueba de dibujo con rellenos automáticos: prueba la función de
rellenos automáticos.
55
56.
Prueba de dibujo de pixeles: cambia los colores de los pixeles en la
pantalla.
Prueba de dibujo de trazos: dibuja trazos en la pantalla.
Prueba de dibujo de formas rellenas: dibuja elipses, rectángulos y
polígonos.
Prueba de desplazamiento de mapas de bits: prueba la función de
desplazamiento de mapas de bits.
Prueba de dibujo de cadenas: prueba diversos tipos de fuentes.
Prueba de Direct3D.
Prueba de deformación de mapa de bits.
Prueba de dibujo de mapa de bits. Prueba de dibujo con rellenos automáticos.
56
57. Prueba de dibujo de píxeles.
Prueba de dibujo de trazos.
Prueba de dibujo de formas rellenas. Prueba de despl. de mapas de bits.
Sección de INFORMACION del disco duro
57
58. PRUEBA DE DISCO DURO
La Prueba de disco duro contiene dos funciones:
Haga clic en el botón Iniciar para comenzar las pruebas de E/S de disco Win32
en la(s) unidad(es) de disco duro seleccionada(s).
Estas pruebas utilizan las funciones de E/S de disco en modo Win32 y efectúan
operaciones de creación, lectura, escritura, búsqueda y eliminación en archivos
de diversos tamaños y datos aleatorios en entornos de multiprocesamiento.
Sección de INFORMACION del disco extraíble
Sección de PRUEBA del disco extraíble
58
59. Sección de INFORMACION del CD-ROM
PRUEBA DE CD-ROM
Para comenzar la prueba de CD-ROM, primero seleccione el cuadro
combinado (si hay más de una unidad), y luego haga clic en el botón Iniciar.
La prueba de CD-ROM consta de cuatro elementos:
Prueba de lectura de datos: prueba la lectura y verificación de un archivo
de prueba con un tamaño superior a 5Mb en el CD-ROM.
Prueba de velocidad de transferencia: prueba y mide la tasa de
transferencia.
Prueba de acceso Full-Stroke: prueba y mide los tiempos de acceso
más largos.
Prueba de acceso aleatorio: prueba y mide el promedio de tiempo de
acceso aleatorio.
Sección de PRUEBA del CD-ROM
59
60. Práctica # 4.- Introducción a un sistema mínimo basado
en un microcontrolador Motorola MC68HC12
1.
OBJETIVOS DE LA PRACTICA
Objetivo General:
Interconectar, verificar y probar el funcionamiento de un sistema mínimo
basado en el microcontrolador 68HC912B32.
Objetivos Particulares:
a) Conocer una arquitectura diferente a la de Intel, en este caso Motorola.
b) Identificar los elementos del sistema de desarrollo del microcontrolador de
Motorola 68HC12 de la empresa RacoM Microelectronics llamado sis68HC912
basado en el modelo de microcontrolador MC68HC912B32.
c) Ejecutar programas en el sistema mínimo basado en microcontrolador
68HC912B32.
2.
REFERENCIAS
El sistema de desarrollo que se utilizará tiene una orientación hacia a
aplicaciones dedicadas al control secuencial, control dedicado en tiempo real,
proceso distribuido, adquisición de datos y robótica, entre otros.
Este microcontrolador MC68HC912B32, contiene memorias RAM, FLASH y
EEPROM, Puerto paralelo con 63 líneas de entrada o salida, Puerto serie
síncrono y asíncrono, Temporizador de captura, comparación, modulación por
ancho de pulso (PWM) y convertidor analógico digital A/D con 8 canales,
programable de 8 o 10 bits.
La memoria FLASH contiene 32 Kbytes, la memoria EEPROM contiene 786
Bytes, la memoria FLASH interactúa con el programa MCUez o con una
terminal, por medio del puerto serie.
La tarjeta de desarrollo puede operar en los siguientes modos:
o
Sis dbug-12, que es el modo de programación con opciones de
depuración.
o
Modo Jump EEPROM, con programación de la memoria EEPROM
o
Modo POD-BDM, para hacer depuración en tiempo de ejecución.
o
Modo Bootload, que es el modo de autoarranque al inicializar el
microcontrolador.
60
61. Principales partes de la tarjeta
La tarjeta de desarrollo SIS68HC12 esta construida basándose en el
microcontrolador 68HC912B32, y las principales partes se muestran en la
siguiente figura:
Fuente de voltaje
de 12 a 16 v c.a.
Led de
Grabación
J10
Led de
encendido
U5
U6
12V
0V
DD+
Led de Prueba
en PB0
Interfaz de
comunicación
RS485
J4
U4
JP9
J9
Interfaz de
comunicación
RS485
J1
JP10
U1
J2
J3
U3
MS1
U2
Ubicación de componentes en la tarjeta sis68HC912.
El microcontrolador U1 es de montaje superficial y se encuentra soldado en
la parte inferior, todas las terminales utilizables del microcontrolador se
encuentran disponibles mediante los conectores J1, J2, J3 y J4 y se describen
en la tabla y figura de localización de conectores y puentes
La tarjeta se alimenta mediante una fuente externa de voltaje de corriente
continua o alterna de 16 volts que se conecta en las terminales 0V, 12 del
conector J10, la tarjeta tiene incorporado un regulador U6 de 5 volts para
alimentar el microcontrolador y un regulador U5 para el voltaje de programación
de la memoria flash.
El circuito de inicio "reset" lo realiza el circuito integrado U2, que es el
encargado de generar la señal de inicio durante el encendido, cada vez que se
presiona el botón MS1 y al detectar un bajo voltaje de alimentación.
Para la comunicación con una computadora personal se tiene que conectar
un cable serial DB9 del conector J9 de la tarjeta al puerto serie de la
computadora. El formato de comunicación es de 8 bits de datos, sin paridad, 1
bit de paro y velocidad de 9600 bauds, programables bajo comandos dbug-12,
El circuito integrado U3 es el que convierte los niveles TTL del microcontrolador
a los niveles RS-232
61
62. Si se quiere comunicar la tarjeta en formato RS485 hay que instalar el
circuito integrado U4, que es un transmisor receptor RS-485, mover los puentes
JP9, JP10 como se muestra en la tabla de localización de puentes y conectarse
a las terminales D+, D- del conector J9. Con la conexión RS485 se pueden
comunicar a través de 2 hilos hasta 32 sistemas.
3.
MATERIAL Y EQUIPO
Hardware
1
Tarjeta de Desarrollo sis68hc912
Tarjeta
de
desarrollo
1
Cable serial RS-232 Macho – Hembra
Cable serial
1
Fuente de voltaje de corriente continua o alterna de 16 volts
Fuente de voltaje
1
Computadora con puerto RS-232, 16 Mbytes de memoria como
mínimo.
Software
1
1
Sistema Operativo MS-DOS 386 o superior, o Sistema Operativo
Windows
Compilador para Microcontrolador Motorola 68HC12 (peasm12)
Programas de ejemplos (para peasm12)
62
63. 4.
PROCEDIMIENTO
Interconexión
1. Conecte el cable serie db9 entre la tarjeta de desarrollo y la
computadora personal.
2. Conecte la fuente de poder en las terminales indicadas y verifique
cuidadosamente que la polaridad es la correcta.
Nota:
Deberá obtener como resultado la activación del led de encendido, color
VERDE, que se encuentra ubicado en la figura siguiente:
Prueba de encendido del microcontrolador
Verificación
Para verificar el correcto funcionamiento del microcontrolador en la
interconexión con la computadora procederemos como a continuación se
describe:
1. Copiar en una carpeta el contenido del archivo peasm12.zip
2. Buscar en la carpeta “compilador” el archivo “IASM12.EXE” y
ejecutarlo
3. El siguiente paso es configurar el compilador por primera vez
para asegurarnos de su correcto funcionamiento.
i. Presionar cualquier tecla para salir de la pantalla de
inicio.
63
64. ii.
Presionar la tecla F10 para acceder al menú general.
iii.
Presionar la tecla C para acceder al menú de
configuración de puerto de comunicaciones.
iv.
1.
2.
3.
4.
5.
Seleccionar la configuración siguiente:
Comm
2
No. Puerto serial.
Baud
9600 Velocidad de transmisión
Parity
N
Paridad en la transmisión
Length
8
Amplitud de los paquetes en bits
Stop
1
Cuantos bits de paro
64
65. v.
Presionar la tecla ESC dos veces para salir de los
menús.
vi.
Presionar la tecla F7 para abrir la ventana de
transmisión de información.
65
66. vii.
Presione el botón de reset del sistema de desarrollo
del microcontrolador. Si se recibe la siguiente pantalla la
comunicación se ha realizado satisfactoriamente.
66
67. Prueba de funcionamiento
Ya que se ha verificado que la conexión se ha realizado satisfactoriamente
se procederá a verificar el correcto funcionamiento del microcontrolador a través
de la ejecución de un programa de prueba previamente compilado.
1. Al término de la Verificación de comunicación entre la placa de
desarrollo y la computadora, nos encontraremos en la ventana de
comunicación.
2. En la placa del sistema de desarrollo active el jumper JP3 para poder
activar el led de prueba.
67
68. 3. Se escribirá en esta ventana la instrucción Load 0, que indica la
descarga del programa al microcontrolador con un desplazamiento en
memoria de 0.
4. Se presiona la tecla F6 y se indica la ubicación completa, y el nombre
completo
del
programa
esta
será
“unidaddirectorio_de_instalaciónejemplospeMCUEZledram.sx”
sin
comillas.
68
69. 5. Al término de la descarga, debe aparecer el prompt indicando que la
descarga ha sido satisfactoria.
6. Para ejecutar el programa introduzca la instrucción “g 800” sin
comillas para indicar que se debe ejecutar el programa que se encuentra en
la dirección $800 que es la dirección de memoria RAM de código de datos
del usuario.
69
70. El resultado será el parpadeo constante del led color AMARILLO, que se encuentra
ubicado en la siguiente posición:
Led de prueba.
7.
Para retornar a la pantalla de edición presionar la tecla F10.
EJEMPLO:
Prueba con programa
Ya que se ha visto como comprobar comunicación con la tarjeta, transferir
los programas al microcontrolador, y ejecutarlos desde la computadora en el
microcontrolador, en esta ultima etapa de la práctica se aprenderá a cargarlos
en el compilador, editarlos y compilarlos.
Cargar un programa en el compilador.
1. Ejecutar “IASM12.EXE”, presionar cualquier tecla para pasar hacia la
pantalla de edición.
70
71. 2. Para poder cargar un programa en el editor del compilador presionar
la tecla F3 y escribir la dirección completa, al finalizar presionar “Enter” y el
programa será cargado.
3. Al cargar el programa el siguiente paso es la compilación para
acceder al menú presionar la tecla F10 y después la tecla A, para acceder al
menú de Ensamblado, las opciones son:
a. Object
.s19
Cambiar con Enter
b. Listing
On
“
c. Debug
On
“
d. Cycle cntr
Off
“
e. Macros
Hide
“
71
73. 5. Para compilar presionar la tecla F4.
Nota:
Es importante que las librerías se encuentren en el directorio del compilador
y no en el directorio del programa, además de que las librerías se dejen en el
lugar donde se encuentran dentro del código del programa.
6. Repita los pasos para cargar, compilar y ejecutar los programas que se
encuentran en el directorio de ejemplos.
73
74. Bibliografía
Abel, Peter (1996). Lenguaje Ensamblador y Programación para PC IBM y
Compatibles. Editorial Pearson Educación. Mexico
Brey, Barry (2001). Los Microprocesadores Intel. Editorial Prentice Hall. México
Godfrey, J. Ferry (1991). Lenguaje Ensamblador para Microcomputadoras IBM.
Editorial Prentice Hall. México
Valvano, Jonathan (2004). Introducción a los Sistemas de Microcomputadora
Embebidos, Simulación de Motorola 6811 y 6812. Editorial Thomson. México
74