Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Implementación de un simulador de instrucciones en un microprocesador simple con fines docentes




Enviado por Omar Fuentes Lorenzo



  1. Resumen
  2. Introducción
  3. La necesidad de un
    software simulador
  4. Validación
    de la realización de la aplicación
    informática
  5. Los medios de
    enseñanza y los medios de
    aprendizaje
  6. Desarrollo de la
    Aplicación
  7. Conclusiones
  8. 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.

Monografias.com

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

Monografias.com

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

Monografias.com

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.

Monografias.com

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.

Monografias.com

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.

Monografias.com

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.

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter