Examen: Parcial 1:2024_10_09:Datos - myTeachingURJC/2019-20-LAB-AO GitHub Wiki
Examen Parcial 1: 2024-10-09. Ciencia e Ingeniería de Datos
- Tiempo: 50 minutos
- Descripción: Examen Parcial 1. Laboratorio. Grado de Ciencia e Ingeniería de Datos
- Fecha: 2024/Octubre/9
- Temario: Sesiones L1, L2, L3 y 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 33% del valor de la pregunta
- Solución disponible en Aula virtual
Programa (5 ptos)
Necesitamos realizar un cálculo de trayectoria de nuestro sistema empotrado, de tal forma que el valor que necesitamos se obtiene con la siguiente expresión: Resultado = 6 * a + b - 15 - 2 * c Escribe un programa en ensamblador del RISC-V, calculo.s, que obtenga el resultado de dicha ecuación, y almacene el resultado en la primera dirección de memoria del segmento de datos. El resultado de la ecuación se debe evaluar para los siguientes valores: a = 15, b = 7, c = 36 (valor al que se inicializan dichas variables, no debe almacenarse en memoria). Además, como la multiplicación no está implemenda en este RISC-V, el cálculo se tendrá que hacer únicamente con sumas y restas Una vez realizado el cálculo, se realizará un "lamp test" en el display de 7 segmentos izquierdo del simulador del RARS, es decir, se encenderán los 8 leds del display izquierdo. Para ello utiliza la instrucción 'sb t1, offset(t2)' para cambiar únicamente el byte de ese display (funciona exactamente igual que sw, pero almacena un byte en lugar de una palabra).
Como el sistema empotrado sí cuenta con un sistema operativo, es necesario hacer que el programa termine al finalizar.
Recuerda utilizar comentarios, .eqv y pseudoinstrucciones siempre que sea necesario.
BONUS: Puntuación máxima si el programa completo tiene 19 o menos instrucciones.
NOTA: Envía el fichero calculo.s con la solución como una entrega del laboratorio.
NOTA2: Si el código da errores al ensamblar, no se corregirá.
Solución al programa
Como siempre ocurre al programar, existen infinitas soluciones. Pero en todas ellas se debe respetar la especificación
Este es el contenido del fichero calculo.s:
# Programa: calculo.s
# Propósito: Parcial 1: cálculo trayectoria (6 * a + b - 15 - 2 *c, para a = 15, b = 7, c = 36,
# resultado en primera dirección .data) y lamp text display izqdo.
# Autor: Javier Macías del Campo
# Fecha: 07/10/2024
#definiciones para las operaciones (valores para a, b y c)
.eqv VA 15
.eqv VB 7
.eqv VC 36
#definiciones para el test del display izquierdo
.eqv DISP_L 0xFFFF0011
.eqv VALOR_TEST 0xFF
.data
resul: .word 0
.text
## Cálculo trayectoria
#6*a
li x2, VA
add x2, x2, x2 #x2 = 2*a
add x3, x2, x2 #x3 = 4*a
add x3, x3, x2 #x3 = 6*a
#2*c
li x1, VC
add x1, x1, x1 #x1 = 2*c
#6*a + b
addi x3, x3, VB #x3 = 6*a + b
#6*a + b - 15
addi x3, x3, -15 #x3 = 6*a + b -15
#6*a + b - 15 - 2*c
sub x3, x3, x1
#almacenamos resultado
la x4, resul
sw x3, 0(x4)
##test luces display izqdo.
li x5, DISP_L
li x6, VALOR_TEST
sb x6, 0(x5)
#termina el programa
li a7, 10
ecall
Autores
- Miguel Ángel de Miguel
- Javier Macías