Está en la página 1de 59

Contenido

Práctica # 1.- Ejecución de Microoperaciones en una 4


Computadora con arquitectura clásica

Práctica # 2.- Ejecución de Instrucciones en una 26


Computadora con arquitectura clásica

Práctica # 3.- Verificación de los elementos que integran la 48


Arquitectura de una computadora comercial
utilizando software especializado

Práctica # 4.- Introducción a un sistema mínimo basado 60


en un microcontrolador Motorola MC68HC12

Bibliografía 74

2
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
Práctica # 1.- Ejecución de Microoperaciones en una
Computadora con arquitectura clásica.

 Objetivos:

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

 Material:

 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
 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
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:
111... Lectura.
222... Escritura.

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

 Elaboración del circuito en Electronics WorkBench:

8

 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
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
Implementación en el circuito:

Tabla de verdad:

11
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
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
Vista del encapsulado:

Implementación en el circuito:

Tabla de verdad:

14
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 Almacena la entrada en la memoria M1.
ADD ENT, M1 Operación de suma con el contenido de la memoria
M1 con la entrada y el resultado lo guarda en
acumulador.
MOV SAL, AC Transfiere el contenido del acumulador a la salida.
END

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
 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
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 Almacena la entrada en la memoria M2.
MOV M1, ENT Almacena la entrada en la memoria M1.
AND M1, M2 Operación AND con los contenidos de la memoria
M1 con M2 y el resultado lo guarda en el
acumulador.
MOV SAL, AC Transfiere el contenido del acumulador a la salida.
END

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
 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
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 Almacena la entrada en la memoria M2.
MOV M2, ENT Almacena la entrada en la memoria M1.
ADD M1, M2 Operación de suma con los contenidos de la memoria
M1 con M2 y el resultado lo guarda en el acumulador.
MOV M2, AC Transfiere el contenido del acumulador a la localidad de
memoria M2.
ADD M2, ENT Operación de suma con la entrada y el contenido de la
localidad de memoria M2, y el resultado se almacenará
en el acumulador.
MOV SAL, AC Transfiere el contenido del acumulador a la salida.
MUL ENT, #2 Multiplica la entrada por 2 y el resultado se almacenará
en el acumulador.
DIV ENT, #2 Divide la entrada entre 2 y el resultado se almacenará
en el acumulador.
MOV M1, AC Transfiere el contenido del acumulador a la localidad de
memoria M1.
MOV SAL, M1 Transfiere el contenido de la localidad de memoria M1,
a la salida.
END

19
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
 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
 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
 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
 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
 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
Práctica # 2.- Ejecución de Instrucciones en un
microprocesador con arquitectura clásica

 Objetivos:

 Utilizar los recursos del Lenguaje Ensamblador de un procesador real


 Analizar la ejecución de instrucciones en un procesador con
arquitectura clásica

 Recursos de Software:

 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 ; Regresa a Ms-Dos por medio de la


Int 21h ; funcion 4c.
END Empieza ; Fin del programa

26
;***************************************************************************
; 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: ; Etiqueta de comienzo de programa

mov Ax, @Data ; Inicializa DS con la


mov Ds, Ax ; direccion de @Data
mov Dx, Offset Mensaje ; Direccion de Mensaje
mov Ah, 9 ; en Dx para poder desplegarlo
Int 21h ; a traves de la Int 21 de MS-DOS.
mov ax,4c00h ; Regresa a MS-DOS por medio de la
int 21h ; funcion 4c.
END Empieza ; Fin del programa

27
;**************************************************************************
; 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: ; Etiqueta de comienzo de programa

Mov Ax, @Data ; Permite el acceso a los datos inicializando


Mov Ds, Ax ; el registro DS con la direccion adecuada.
Mov Dx, OFFSET Mensaje ; Carga la direccion de mensaje a DX para
Mov Ah, 9 ; poder desplegarlo con la funcion 9 de la
Int 21h ; Int 21h (DS:DX contiene la direccion de
; la cadena que se desplegara).
Mov Cx, 15 ; Contador de los numeros (van a ser 15).
Mov Bx, OFFSET Tabla ; Permite acceso a la tabla de equivalencias
; hexadecimales inicializando su direccion
; y apuntando al primer elemento.
Itera: ; Etiqueta controladora de las iteraciones
Mov Al, Cl ; Pone en Al el numero a traducir
Xlat ; (empezando desde 15) y lo traduce.
Mov Dl, Al ; Prepara para desplegar el numero usando la
Mov Ah, 2 ; funcion 2 de la Int 21h. Dl debe de tener
Int 21h ; el caracter a ser desplegado.
Mov Dl, 10 ; Salta una linea dando un efecto de
Int 21h ; escalera. De nuevo se usa la funcion 2.
Loop Itera ; 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
; un ciclo se decrementa en uno hasta llegar
; a cero.
Mov ax,4c00h ; Regresa a MS-DOS por medio de la funcion
; 4c de la interrupcion 21h.
int 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).
END Empieza ; Fin del programa

29
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:\tasm\bin\, 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
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
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
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
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
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
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
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:\tasm\bin\,


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
TASM\BIN, 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
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
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
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
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
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:\tasm\bin\,


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
Abrir el símbolo del sistema:
Una vez abierto el símbolo del sistema, debemos situarnos en la carpeta
TASM\BIN, 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
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
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
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
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
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
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
 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
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
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
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
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
 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
 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
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
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
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
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

También podría gustarte