Examen: Parcial 1:2024_10_14:GISAM - myTeachingURJC/2019-20-LAB-AO GitHub Wiki
Examen Parcial 1: 2024-10-14. GISAM
- Tiempo: 50 minutos
- Descripción: Examen Parcial 1. Laboratorio. Grado en Ingeniería de Sistemas Audiovisuales y Multimedia
- Fecha: 2024/Oct/14
- Temario: Sesiones L1-L4
Contenido
Enunciado
El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un programa
Test (5 ptos)
- Realizado a través de Aula virtual
- 10 preguntas tipo test
- Las respuesats incorrectas restan un 25% del valor de la pregunta
- Solución disponible en Aula virtual
Programa (5 ptos)
Escribe un programa en ensamblador del RISC-V, en el fichero store.s, que calcule la siguiente expresión:
g = A + 2C + 4K
Evaluarla para los valores iniciales A=1
, C=1
y K=1
. El resultado se debe almacenar en la variable g
situada en la primera posición de memoria disponible en el segmento de datos. Adicionalmente, el valor de g se debe copiar también a las variables h
y i
que se sitúan justo a continuación de g
en el segmento de datos. Las 3 variables, por tanto, tendrán el mismo valor una vez finalizado el programa
Como último paso, el programa deberá escribir el valor de g
en la dirección 0xFFFF0010, donde está situado el display de 7 segmentos derecho
BONUS
Conseguirás este bonus si has obtenido la máxima puntuación (programa perfecto) y si tu programa tiene menos de 19 instrucciones
Solución al programa
#-- Evaluar la expresión g = A + 2C + 4K
#-- para A=1, C=1, K=1
#-- Resultado: 7 (0x07)
#-- Constantes. Valores iniciales para
#-- A, C y K (ESPECIFICACIONES)
.eqv A 1
.eqv C 1
.eqv K 1
#-- Periferico: Display de 7 segmentos derecho
.eqv DISP_R 0xFFFF0010
.data
g: .word 0x0 #-- ESPECIFICACIONES
h: .word 0x0 #-- ESPECIFICACIONES
i: .word 0x0 #-- ESPECIFICACIONES
.text
#-- Inicializar registros
li x1, A #-- x1 = A
li x2, C #-- x2 = C
li x3, K #-- x3 = K
#-- Evaluar la expresión
#-- g = A + 2B + 4C
#-- x10 = x1 + 2X2 + 4x3
add x10,x2,x2 #-- x10 = 2B
add x10,x10,x1 #-- x10 = A + [2B]
add x11,x3,x3 #-- x11 = C + C = 2C
add x11,x11,x11 #-- x11 = [2C] + [2C] = 4C
add x10,x10,x11 #-- x10 = [A + 2B] + 4C
#-- Almacenar resultado en variable g
la x30, g #-- Direccion de la variable g
sw x10, 0(x30) #-- g = Resultado de la expresion
#-- Almacenar resultado en variable h
sw x10, 4(x30) #-- h = g
#-- Almacenar resultado en variable i
sw x10, 8(x30) #-- i = g
#-- Mostrar resultado en display de 7 segmentos
li x30, DISP_R
sw x10, 0(x30)
#-- Terminar
li a7, 10
ecall
Este programa tiene 18 instrucciones por lo que se cumple el BONUS! 🏅
Evaluación
La evaluación del programa se hace en dos fases:
-
Funcionalidad (2.5 ptos): Se comprueba si el programa funciona, y si cumple con las especificaciones (Nombre del fichero correcto, ensablado sin errores, sin errores en tiempo de ejecución, resultado correcto, variables definidas en sus posiciones de memoria especificadas, etc). Esto se hace mediante un script de test, que automatiza el proceso
-
Código (2.5 ptos): Se inspecciona visualmente cómo está hecho el código: código limpio, claro, con comentarios, instrucciones correctas, fallos de programación, etc...
TEST automático
🚧 TODO 🚧
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)