Implementación de un simulador de instrucciones en un microprocesador simple con fines docentes
Enviado por Omar Fuentes Lorenzo
- Resumen
- Introducción
- La necesidad de un software simulador
- Validación de la realización de la aplicación informática
- Los medios de enseñanza y los medios de aprendizaje
- Desarrollo de la Aplicación
- Conclusiones
- Bibliografía
Resumen
El presente trabajo muestra la elaboración de un simulador de instrucciones de un programa realizado en un lenguaje de programación simple (LPS), por un microprocesador sencillo. Es realizado con fines pedagógicos, como herramienta de apoyo a la docencia, básicamente en la asignatura de Arquitectura de Computadoras, para los estudiantes de la Carrera de Informática, el cual le ayudaría a estos a comprender mejor el funcionamiento interno de un microprocesador real y cómo este realiza la ejecución de un programa en alto nivel y su interacción con la memoria y los dispositivos periféricos.
El software es capaz de decodificar diversos errores de compilación, reconocimiento de instrucciones mal escritas, variables no declaradas en el segmento de datos, errores sintácticos y de estructura de programa, variables fuera de rango, etc. Al ser compilado correctamente muestra un espacio de memoria RAM y ROM virtuales, que solamente permiten un máximo de 50 instrucciones, así como los registros Acumulador y Contador del microprocesador en los cuales se puede ver el funcionamiento del programa tanto en formato decimal como hexadecimal. También permite la ejecución del programa completo o paso a paso.
Palabras claves: software, tecnología, educación, simulador, microprocesador.
Abstract.
This work shows the development of a simulator program instructions performed in a simple programming language (LPS), using a simple microprocessor. It is made for educational purposes, as a tool to support teaching, primarily on the subject of Computer Architecture, for students of the School of Computing, which will help these to better understand the inner workings of a real microprocessor and how this makes the implementation of a high-level program and its interaction with memory and peripheral devices.
The software is capable of decoding various compilation errors, misspelled recognition instructions, not declared in the data segment variables, syntax errors and program structure, variables out of range, etc.. When compiled correctly shows a RAM space and virtual ROM, which only allow a maximum of 50 instructions and the Accumulator and Counter microprocessor registers where you can see how the program works both in decimal and hexadecimal. It also allows the implementation of the entire program or step by step.
Key words: software, technology, education, simulates, microprocessor.
Introducción
El uso de la tecnología educativa se hace cada vez más evidente dentro del proceso de aprendizaje en los distintos niveles de enseñanza. Esta juega un papel fundamental ya que mantiene la activación constante de los alumnos e individualiza el aprendizaje de los mismos.
La computadora y los softwares educativos son un poderoso medio para el profesor, posibilitando el desarrollo de las diferencias individuales y de la metacognición de los estudiantes, contribuyendo de esta forma al desarrollo de capacidades y posibilidades en el uso de la computadora como medio de enseñanza.
En este campo se cuentan con aplicaciones para la enseñanza técnica de las diferentes ciencias, libros electrónicos de variadas disciplinas, medios de percepción directa, imágenes fijas y en movimiento, sonido, situación real y sistemas entrenadores o simuladores.
Un simulador tiene la ventaja de permitirle al estudiante desarrollar la destreza mental o física a través de su uso y ponerlo en contacto con situaciones que pueden ser utilizadas de manera práctica. Cuando estos programas son usados en trabajo colaborativo, estimulan el trabajo en equipo al propiciar la discusión del tema. Además ofrece la posibilidad de repetir infinitas veces, en condiciones próximas a las reales, a partir de su modelación; procesos y fenómenos que pueden ser muy difícil o costosos de lograr en condiciones reales, y por tanto, estudiar sistemáticamente sus comportamientos hasta lograr los objetivos deseados. La simulación además elimina los riesgos que siempre se presentan en la interacción con la realidad, tanto para dispositivos, instrumentos, como para los estudiantes; con lo que se crea confianza en ellos para implicarse en el estudio de esa realidad. Permite la realimentación inmediata, pues los efectos que se logran durante el funcionamiento del sistema, fenómeno o proceso que se simula, como resultado de introducir modificaciones en determinados parámetros, resultan inmediatos; lo que permite corregir la actuación del estudiante en cada momento.
Desarrollo.
La necesidad de un software simulador
Una de las carreras estudiadas en la Universidad de Pinar del Río "Hermanos Saiz Montes de Oca" (UPR) es Ingeniería Informática, que fue creada en el 2001 tras el esfuerzo de varios profesores del Departamento de Computación como se llamaba antes de iniciarse la carrera, el cual tenía como misión llevar a las carreras existentes en aquel entonces las asignaturas a fines con la informática. Entonces pasa de Departamento de Computación a Departamento de Informática, el cual aparte de impartir docencia en las otras carreras, asume un grupo de disciplinas conformadas por asignaturas propias de esta ingeniería.
Los microprocesadores y las memorias son dispositivos electrónicos que utilizan para su procesamiento lógica binaria. Esta cadena de bits es agrupada para su mejor entendimiento y facilidades de programación en instrucciones que son utilizadas por los diferentes lenguajes (C++, Java, PHP, etc).
Los microprocesadores son los encargados de la ejecución de las instrucciones. Para su funcionamiento requieren de una gran variedad de registros (acumulador, contador, de datos, de segmento, entre otros) ,mientras que las memorias ROM se encargan de guardar los programas que se están ejecutando, los cuales no pueden ser modificados, ni perderse en caso de que falte el fluido eléctrico. Por otra parte las memorias RAM son las encargadas de almacenar los datos, los cuales pueden ser modificados durante la ejecución del programa y en caso de faltar la electricidad se pierden. (1), (2).
En este sentido los estudiantes de la carrera de Informática no llegan a percibir cómo puede un programa (software) ser ejecutado por un microprocesador, debido a que dicho programa se escribe en un lenguaje de alto nivel («C, java, PHP») y el microprocesador (hardware) solo entiende señales lógicas (0 y 1).
El paso de traducción de las instrucciones, que es realizado automáticamente por los compiladores, el cual convierte el programa a su respectivo código de máquina (valores lógicos de 0 ó 1) y almacena dicho código y datos en la memoria, es el que crea dificultades en la comprensión del estudiante.(3).
Validación de la realización de la aplicación informática
Para validar la necesidad del diseño e implementación de la aplicación informática se realizó una encuesta a 38 estudiantes escogidos al azar de tercer y cuarto años de la carrera de Informática, encaminada a corroborar una investigación del proceso de E-A de los microprocesadores y la utilización de herramientas de simulación en la asignatura impartida, arquitectura de computadoras.
Como resultado de esta encuesta tenemos que en la asignatura se desarrollan bastantes actividades prácticas (clases prácticas y laboratorios) utilizando la herramienta TASM, la cual es un compilador. No se utiliza en ningún momento un software para la simulación, lo cual se refleja en que el 94% de los estudiantes encuestados no conocen de la existencia de herramientas de simulación de microprocesadores.
En las preguntas relacionadas con la interpretación de los lenguajes de alto nivel por parte de los microprocesadores y las memorias, los estudiantes respondieron de manera correcta en la mayoría de los casos, aceptando en la respuesta un 60.0% de ellos. Teniendo en cuenta de que estos resultados pueden mejorar, surge la idea de realizar un software simulador de un microprocesador que ayude a la mejora de la E-A
de los microprocesadores en los estudiantes de segundo año de la carrera de Informática.(4).
Los medios de enseñanza y los medios de aprendizaje
La metodología de la enseñanza y el aprendizaje es entendida como la ciencia que estudia los métodos, técnicas, procedimientos y medios dirigidos a la enseñanza de una disciplina dada. De aquí que, a diferencia de algunas tendencias pedagógicas como la tecnología educativa, que sitúa a los medios técnicos como centro del proceso de enseñanza–aprendizaje, éstos se vean, junto a los procedimientos, como elementos para instrumentar los métodos. (5), (6).
En nuestro contexto podemos asumir el concepto de Tecnología Educativa (TE) expresado a continuación: "Es el uso pedagógico de todos los instrumentos y equipos generados por la tecnología, como medio de comunicación, los cuales pueden ser utilizados a fin de facilitar el proceso de enseñanza-aprendizaje.
Hoy en día podríamos decir que también se incluyen las altas tecnologías de la información. Es el conjunto de medios, métodos, instrumentos, técnicas y procesos bajo una orientación científica, con un enfoque sistemático para organizar, comprender y manejar las múltiples variables de cualquier situación del proceso, con el propósito de aumentar la eficiencia y eficacia de éste en un sentido amplio, cuya finalidad es la calidad educativa". (7)
Basándonos en este concepto y asumiendo a la tecnología educativa, como ciencia cuyo objeto de estudio es el proceso de mediación tecnológica orientado desde su base a apoyar otro proceso con naturaleza formativa, dígase la EA, se plantean tres aristas fundamentales desde las que se debe mirar la función mediadora de los materiales que se propongan, véase Fig 1.
Figura 1. Objeto de la tecnología Educativa.
En un primer plano la comunicación que se establece entre los dos actores del proceso, profesor y estudiantes; en este sentido la mediación tecnológica permite multiplicar los canales en que pueda ocurrir esta comunicación.
En un segundo plano permite soportar información para ser representada a los estudiantes en diferentes formatos. En este sentido los niveles de abstracción que son exigidos a los estudiantes son menores que si ofrecemos una mera descripción verbal de los conocimientos que como parte de los objetivos se pretende transmitir.
Y en tercer lugar hace posible a los profesores realizar un determinado tratamiento de la información involucrada en el proceso, dígase aquella generada por la actividad de evaluación, y la información significativa del sistema de conocimientos que está involucrado en la actividad.
O sea, se entenderá en lo que se sigue a la mediación tecnológica como: "relación entre los actores del proceso de EA y los recursos tecnológicos que facilitan una mayor cantidad y calidad de interrelaciones comunicativas, al multiplicar los canales y los soportes". (8).
Cualquiera que sea la arista con que se conciba el medio, siempre su propósito final será contribuir a elevar la calidad del proceso de EA, y en la medida en que contribuya tanto a la comunicación, el tratamiento y soporte de la información pues mayor será la contribución a dicho proceso.
Desarrollo de la Aplicación
Para el diseño de este material se han tenido en cuenta algunos principios generales, como lo son:
La motivación. Es de vital importancia que en los estudiantes se muestre una contradicción, que en forma de una necesidad establecerá hacia dónde estarán dirigiéndose las actividades y tareas.
La preparación del aprendizaje al establecer niveles del grupo y conocimientos previos, diferencias individuales, que permitirá el desarrollo de actividades en las que los más aventajados se vean exigidos y los más rezagados se sientan apoyados.
Definición clara de los objetivos de aprendizaje, organización del contenido, participación, retroalimentación y refuerzo.
En la solución del problema se decidió la elaboración de un simulador de un microprocesador sencillo, además se desarrolló un lenguaje de programación, muy sencillo también a la vez que intuitivo. Todo esto con el objetivo de facilitar el aprendizaje de los estudiantes. A continuación se realiza una descripción del diseño de la propuesta de solución y se explica el lenguaje de programación elaborado, el cual será utilizado por la aplicación.
El lenguaje de programación sencillo (LPS) fue creado para ser utilizado por SIMPRO. Mediante este lenguaje los usuarios que interactúen con la aplicación podrán crear sus propios programas, los cuales serán ejecutados posteriormente por la misma. SIMPRO permitirá entender el funcionamiento de la ejecución de las instrucciones del programa elaborado mediante un microprocesador sencillo. Cuenta con un reducido set de instrucciones las cuales tienen las funciones elementales de cualquier programa.
Para poder elaborar un programa deberá tener una estructura, es decir, poseerá un .datos en el cual serán declaradas las variables, tendrá además un .código donde serán escritas las instrucciones que se ejecutará posteriormente, y por último el usuario deberá usar .fin para indicar que ha concluido el programa.
A continuación se describen las instrucciones con las cuales cuenta el lenguaje:
Lee: Simula la entrada de un valor desde el periférico típico, el teclado, el cual se almacena en una variable en la memoria RAM. El valor máximo permitido es de 65535. No admite un operador que no sea una variable declarada en los datos.
Sintaxis: lee variable Ejemplo: lee var1
Escribe: Simula la salida de un valor por el periférico típico, el video, el cual ya se encontraba previamente almacenado en la memoria RAM. El valor máximo a visualizar es de 65535. No admite un operador que no sea una variable declarada en los datos.
Sintaxis: escribe variable Ejemplo: escribe var1
Carga: Almacena un valor directamente o de una variable existente en la memoria RAM en el registro acumulador del microprocesador. El valor máximo es de 65535.
Sintaxis: carga operador Ejemplo: carga 23
Almacena: Almacena el valor del registro acumulador del microprocesador en una variable existente en la memoria RAM. El valor máximo es de 65535.
Sintaxis: almacena variable Ejemplo: almacena var1
Suma: Efectúa la suma del registro acumulador del microprocesador con un valor directamente o con una variable existente en la memoria RAM y el resultado lo guarda en el propio registro acumulador. El valor máximo es de 65535.
Sintaxis: suma operador Ejemplo: suma 23
Resta: Efectúa la resta del registro acumulador del microprocesador con un valor directamente o con una variable existente en la memoria RAM y el resultado lo guarda en el propio registro acumulador. El valor máximo es de 65535.
Sintaxis: resta operador Ejemplo: resta 23
Multiplica: Efectúa la multiplicación del registro acumulador del microprocesador con un valor directamente o con una variable existente en la memoria RAM y el resultado lo guarda en el propio registro acumulador. El valor máximo es de 65535.
Sintaxis: multiplica operador Ejemplo: multiplica 23
Divide: Efectúa la división del registro acumulador del microprocesador con un valor directamente o con una variable existente en la memoria RAM y el resultado lo guarda en el propio registro acumulador. El valor máximo es de 65535.
Sintaxis: divide operador Ejemplo: divide 23
Salta: Efectúa el salto a un número de línea declarado como operador. Este se debe efectuar siempre hacia delante porque puede provocar la ocurrencia de un ciclo infinito, caso en el cual aparecerá un mensaje de alerta.
Sintaxis: salta operador Ejemplo: salta 7
Lazo: Efectúa el salto a un número de línea declarado como operador. Esta instrucción decrementa el registro contador del microprocesador y efectúa el salto siempre que este sea distinto de cero, por lo que previamente se debe haber puesto el registro contador al valor deseado utilizando la instrucción contar.
Sintaxis: lazo operador Ejemplo: lazo 23
Contar: Almacena un valor directamente o de una variable existente en la memoria RAM en el registro contador del microprocesador. El valor máximo es de 65535. Este registro está vinculado al funcionamiento de la instrucción lazo, puesto que su valor indicará la cantidad de veces que se realizara esta instrucción.
Sintaxis: contar operador Ejemplo: contar 23
A continuación mostramos un ejemplo de un programa elaborado con el lenguaje LPS:
1- .datos ; Inicializa los datos
2- var1 ; Crea una variable denominada var1, valor máximo de 65535
3- var2
4- .código ; Inicializa el código
5- lee var1 ; Permite la entrada de un valor desde teclado y almacena en var1
6- carga var1 ; Carga var1 en el registro acumulador
7- contar 2 ; Pone el registro contador a 2
8- suma 36 ; Le suma 36 al acumulador
9- resta 12 ; Le resta 12 al acumulador
10- almacena var2 ; Almacena el valor del acumulador en var2
11- lazo 8 ; efectúa un salto a la línea 8 y decrementa el contador
12- escribe var2 ; Muestra el resultado en la pantalla de var2
13- .fin ; Fin del programa
Figura 2: Interfaz Principal.
El software simulador presenta una pantalla principal la cual se muestra en la Fig 2. En esta aparece un menú acompañado de un área de trabajo, para editar el programa que se desea ejecutar. Por defecto aparece la organización de los indicadores de estructura de programa; estos son: .datos, .código y .fin. Esto permite darle al estudiante una estructura previamente establecida similar a la estructura de una memoria donde se encuentra separado los datos de las instrucciones.
Una vez escrito el programa el usuario debe solicitar la opción Compilar del menú Ejecutar o presiona el botón compilar en la forma principal Fig 3. El sistema analiza sintácticamente y semánticamente el código y muestra los errores cometidos en la elaboración de dicho código para que puedan ser corregidos por el usuario, en caso de no haberse cometido errores o de haberlos corregido, el sistema muestra un mensaje indicándolo, finalizando así la compilación del programa. Los errores cometidos son registrados para al finalizar emitir una evaluación sobre el aprendizaje del estudiante. Esta opción se accede mediante la opción Evaluar del menú.
Figura 3: Menú de compilación, ejecución y paso a paso.
En caso de aparecer errores tanto en la declaración de variables o en la elaboración del programa aparece una ventana en la parte inferior donde se indica el número de la línea donde se cometió el error, el código escrito de la línea donde se encuentra el error y por último el tipo de error que se cometió en la escritura del programa Fig 4. Esto nos permite una realimentación. Al posicionarse sobre la celda que indica el número de la línea donde se cometió el error y presionar F1, este muestra una ayuda relacionada con el error cometido. Para que las opciones de Ejecutar, Paso a paso o Evaluar se habiliten es necesario que el proceso de compilación se haya efectuado sin errores.
La opción Evaluar permite al estudiante ir siguiendo su nivel de asimilación del contenido, esta emite un criterio en base a las veces que el estudiante se equivocó tanto en la cantidad de errores de distintos tipos como en la repetición de estos, del mismo tipo y además en las veces o correcciones en los que este fue capaz de solucionarlo.
Figura 4: Ventana de errores de compilación.
Al presionar cualquiera de las opciones de Ejecutar o Paso a paso se despliega en la parte inferior una ventana de ejecución donde aparecen cuatro casillas resultados, correctamente identificadas Fig 5. Estas son: Dispositivos de Entrada/Salida, donde se simula las operaciones de entrada por teclado y salida por video. Microprocesador, donde están reflejados dos registros de estos dispositivos, el acumulador y el contador. (por eso se le denomina "simple"). Memoria ROM, donde se almacena el código del programa en su traducción numérica y Memoria RAM, donde se almacena el resultado del trabajo con las variables.
Las opciones de Ejecutar y Paso a paso, difieren en que la primera ejecuta el programa y muestra el resultado final de este. Sin embargo al correr dicho programa paso a paso se puede ir viendo cómo se van ejecutando cada una de las instrucciones en un momento determinado, lo que se va indicando al sombrearse la casilla y la línea que se está ejecutando de color azul. Además en la parte inferior de la ventana de ejecución aparece una descripción de la instrucción que se está ejecutando en ese momento, permitiendo también una realimentación e informando al estudiante del resultado de lo que está haciendo.
Las opciones del menú Ejecutar->Hexadecimal o Decimal permiten convertir el código que se está ejecutando a números hexadecimales o decimales, según se desee.
Figura 5: Ejecución del programa en la opción Paso a Paso.
Tanto en las instrucciones de entrada como en las de salida por dispositivos estándar (teclado y video), aparecen unas ventanas mostrando el resultado de la operación efectuada Fig 6.
Figura 6: Ventanas para la entrada (teclado) y salida (video) de la variables.
Conclusiones
Los diferentes aspectos que se abordan en el trabajo presentado, el problema planteado, los objetivos propuestos y el análisis realizado permiten arribar a las siguientes conclusiones:
1. Se diseñó una herramienta que permite mostrar el proceso de ejecución de instrucciones por un microprocesador y su almacenamiento en la memoria, de conjunto con un lenguaje de programación simple (LPS) con un set de instrucciones reducido.
2. Con su introducción en el programa de la asignatura Arquitectura de Computadoras se viene observando una mejor comprensión de los contenidos relacionados con esta.
Bibliografía
1-. Hayes, John P., Computer Architecture and Organization, Cap 3: Processor Basic, Ed Mc Graw Hill, Third Edition. p 137-210.1999.
2-. Triebel, Walter A., The 80386, 80486 and Pentium processor: Hardware, Software and interfacing. Cap 4, Ed Prentice Hall, p 86-138.1999.
3-. Deitel, Harvey M., Como programar en C/C++, Cap 1: Conceptos de Computación, Ed Pearson Education, p 1-21. 2003.
4-. Fuentes Lorenzo, Omar., Encuesta y entrevista realizada a los estudiantes de 3ro y 4to años de la carrera de Informática de la Universidad de Pinar del Río. 2012.
5-. Escudero, J.M., Nuevas reflexiones en torno a los medios de enseñanza, Revista de investigación educativa, 1, 19-44. Madrid. 1983.
6-. Escudero, J.M, La investigación sobre los medios de enseñanza: Revisión y perspectivas actuales, Enseñanza, 1, 87-119. Madrid.1983.
7-. http://www.definicion.org/tecnologia-educativa. 2013. (verif. 14 de julio de 2013).
8-. Malagón, Mario; Frias, Yicel. La mediación como potencialidad de las tecnologías de la información y las comunicaciones en los procesos de enseñanza-aprendizaje. 2008.
Autor:
Fuentes Lorenzo, Omar;
Gallego Martínez, Elieser E.;
Carmona Lemus, Silvio P.;
Gonzales Clemente, Denet.
Universidad de Pinar del Río "Hermanos Saiz Montes de Oca" Calle Martí No. 270 Final. Pinar del Río. Cuba.