Manual de Prácticas Arquitectura de Computadoras

September 11, 2017 | Author: Tanni Diaz | Category: Computer Memory, Central Processing Unit, Assembly Language, Computer Program, Computer File
Share Embed Donate


Short Description

Descripción: Manual de practicas para la materia de Arquitectura de computadoras I....

Description

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

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

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



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



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

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



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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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á “unidad\directorio_de_instalación\ejemplos\peMCUEZ\ledram.sx” sin comillas.

68

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

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

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

f.

Includes

View



4. Para salir presionar ESC dos veces.

72

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

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF