Академический Документы
Профессиональный Документы
Культура Документы
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
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:
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:
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.
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.
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.