Вы находитесь на странице: 1из 5

Laboratorio de Electrónica Digital II

Práctica No. 3
Procesador Little Computer LC3 y Lenguaje Ensamblador
Profesor Lab.: Luis Germán Garcı́a M. (german.garcia@udea.edu.co)
Marzo 9, 2020

Fecha de entrega: Marzo 30 de 2020


Medio de entrega: http://www.ingeniaudea.co
Sustentación: Marzo 31-Abril 2 de 2020.
Valor Práctica: 8% del curso

1 Objetivo de la Práctica
Desarrollar un programa para el procesador LC3, empleando lenguaje de bajo nivel junto con los
diferentes conceptos vistos tanto en clase como en el laboratorio.

2 Objetivos Especı́ficos
(i) Examinar el modelo de programación, los modos de direccionamiento y el conjunto de in-
strucciones del procesador LC3.
(ii) Especificar el Pseudocódigo o diagrama de flujo del programa a desarrollar.

1
(iii) Describir el Pseudocódigo o diagrama de flujo mediante lenguaje ensamblador para el proce-
sador LC3.
(iv) Evaluar el funcionamiento del programa empleando herramientas de simulación disponibles
para el procesador LC3.

3 Procedimiento
Para el correcto desarrollo del programa a ser ejecutado por el procesador LC3 es necesario leer
completamente esta guı́a. Se sugiere seguir el procedimiento indicado a continuación:

a. Comprender la arquitectura del conjunto de instrucciones del procesador LC3.


b. Descargar las herramientas para el procesador LC3 (Ensamblador y Simulador) e instalarlas
en su propio equipo. En la sección de referencias se encuentran los links para descargarlas.
c. Ejecutar los programas de ejemplo disponibles en la página del curso, empleando el simulador
del procesador LC3, y comprender su funcionamiento.
d. Elaborar el algoritmo del programa a desarrollar mediante Pseudocódigo o diagramas de
flujo, el cual debe llevar a cabo la funcionalidad que se indica más adelante.
e. Codificar el programa solicitado empleando lenguaje ensamblador para el procesador LC3
basado en el Pseudocódigo o diagrama de flujo realizado previamente.
f. Ejecutar el programa desarrollado en el simulador para el procesador LC3 y verificar el
correcto funcionamiento del mismo. Llevar a cabo las correcciones pertinentes, si fuese el
caso.
g. Enviar el código fuente de su programa en lenguaje ensamblador para el procesador LC3
antes de la fecha lı́mite.
h. Sustentar el diseño en el horario de laboratorio correspondiente.

4 Funcionamiento
El programa a desarrollar permite a un usuario jugar el reconocido juego de ingenio denominado
MasterMind o Mente Maestra. MasterMind es un juego de mesa que pone a prueba la capacidad
de análisis de un jugador que debe averiguar el código secreto que otro usuario ha generado
previamente, en el menor número de intentos posible.

4.1 El juego
El programa le permite a un usuario indicar un código secreto de n dı́gitos (ej. si n = 4,
code = 4589). Dicho código no podrá tener dı́gitos repetidos (ej. 1123 no es válido), situación que
debe ser validada por el programa. Una vez el código ha sido generado, otro usuario, desde ahora el
jugador, tendrá la posibilidad de comenzar a adivinar el código secreto en un máximo de t intentos.

2
A continuación, el jugador introduce un código de n dı́gitos (ej. 2894). Este código tampoco
podrá tener dı́gitos repetidos (ej. 5845 no es válido). En caso el código tenga dı́gitos repetidos, el
programa deberá estar en capacidad de reportar dicha situación e ignorar el código ingresado.

Con el código ingresado por el jugador, éste es comparado con el código secreto:

1) Si son iguales, entonces se le indica al jugador que ha logrado averiguar el código secreto.

2) Si no son iguales, se le debe brindar al jugador una serie de pistas para ayudarle a adivinar
el código en un nuevo intento:

(a) número de dı́gitos que adivinó en la posición correcta.


(b) número de dı́gitos que adivinó pero que no se encuentran en la posición correcta.

De esta manera, el jugador puede tratar de adivinar nuevamente el código secreto, haciendo
uso de la información provista. Ejemplo para n = 4:

(a) Código secreto: 0528. Código del jugador: 1583. Salida: 1 en posición correcta, 1 en
posición incorrecta.
(b) Código secreto: 0528. Código del jugador: 2890. Salida: 0 en posición correcta, 3 en
posición incorrecta.

Si el jugador desea continuar, el programa le permitirá introducir de nuevo un código


hasta adivinarlo o rendirse. Tenga en cuenta que existe un número máximo t de intentos
disponibles.

Tenga presente que cuando el jugador ha logrado determinar el código secreto, se le debe indicar
el número de intentos que requirió para adivinar el código.

4.2 Funcionamiento en el LC3


El grupo de estudiantes debe diseñar un programa que permita jugar el MasterMind, empleando
la consola del simulador tanto para ingresar como para mostrar datos con las caracterı́sticas que
se indican a continuación:

(1) Al iniciar el programa, éste debe solicitar los números n y t.


(2) A continuación, el programa solicita que se ingrese un código secreto de n dı́gitos con las
caracterı́sticas que se dieron anteriormente.
(3) Una vez asignado el código secreto, el jugador tiene la posibilidad de adivinar dicho código
en un máximo de t intentos.
(4) Cuando el jugador adivine el código secreto o se rinda, el programa ofrecerá la posibilidad
de comenzar nuevamente el juego, empezando por solicitar el código, es decir, no se solicitan
n y t.

3
4.3 Consideraciones
a. Dı́gitos que se reciben por teclado son valores ASCII. Por ejemplo, el caracter cero (’0’)
corresponde al valor decimal 48 (0x30).
b. Números de varias cifras necesitan ser convertidos a ASCII antes de poder ser enviados a la
consola.
c. Sub-rutinas son obligatorias en su programa para hacer el código modular.
d. Para el laboratorio del M9-12: 4 <= n <= 12 y 5 <= t <= 10. Para los laboratorios del
J9-12 y J15-18: 4 <= n <= 15 y 5 <= t <= 12. El programa debe validar el valor que se
ingresa tanto para n como para t.
e. El programa debe ser amigable, de manera que cualquier persona con conocimientos mı́nimos
de computadoras lo pueda jugar.

5 Entrega
El grupo de estudiantes debe enviar un archivo comprimido que incluya los archivos importantes
de su programa en ensamblador: *.asm, *.txt, *.hex, etc.
El nombre del archivo comprimido debe tener el siguiente formato:
p3 primerapellidointegrante1 primerapellidointegrante2 horariolaboratorio.zip.
Ejemplo: si el primer apellido de ambos integrantes es Patt y Patel, respectivamente, y el labo-
ratorio es el Martes de 9-12, entonces el archivo debe ser nombrado: p3 patt patel m9-12.zip.

6 Evaluación
La evaluación de la práctica se divide en dos partes, funcionamiento (50%) y sustentación (50%).
La nota del funcionamiento se asigna por igual a todos los integrantes del grupo de trabajo, mien-
tras que la nota de sustentación es individual. En caso un estudiante obtenga una nota inferior a
3.0 en la sustentación, su nota final de la práctica será la que obtuvo en la sustentación, es decir,
no se tendrá en cuenta el funcionamiento en el cálculo. Durante el desarrollo de la práctica (en las
diferentes semanas para ello), el profesor hará seguimiento al trabajo de cada estudiante, la cual
se usará para determinar la forma como se desarrolle la sustentación.

Cada grupo de trabajo deberá sustentar la práctica en un tiempo de 15 minutos, 7 minutos para
mostrar el funcionamiento y 8 minutos para sustentar el diseño. Durante la sustentación, el profesor
hará entre dos (2) y tres (3) preguntas a cada uno de los integrantes del grupo de trabajo. Entre
las preguntas que se podrı́an hacer estarı́an las siguientes:
a. Explicar el Pseudocódigo o diagrama de flujo.
b. Explicar alguna de las instrucciones del procesador LC3 empleadas.
c. Realizar cambios al programa para cambiar la funcionalidad.
d. Cambiar la ubicación de datos en la memoria del sistema LC3.
e. Explicar cualquiera de las sub-rutinas desarrolladas.

4
7 Referencias
a. Introduction to Computing Systems, Yale N. Patt, Sanjay J. Patel.
Diapositivas sobre la arquitectura LC3.
https://highered.mheducation.com/sites/0072467509/student view0/powerpoints nc state.html
Visitado: Julio, 2019.

b. Ensamblador y Simulador para LC3 (Windows/Linux)


https://highered.mheducation.com/sites/0072467509/student view0/lc-3 simulator.html
Visitado: Julio, 2019.

c. The LC-3, University of Texas at Austin


http://www.cs.utexas.edu/users/fussell/cs310h/lectures/Lecture 10-310h.pdf
Visitado: Julio, 2019.