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

Licencia

Enlaces