Repository navigation
Examen: Parcial 1:2025_10_15: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
El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un programa
- 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
Enunciado
Escribir un programa en rars que, cíclicamente, vaya encenciendo los segmentos exteriores del display derecho y apagando los del izquierdo. Se mantendrá también una variable como contador del nº ciclo actual (no se destinará ningún registro de forma exclusiva para guardar la dirección de la variable ni su contenido).
La secuencia seguida sería por tanto:
Observaciones:
-
Nótese que el segmento a es 1, el b es 2, el c es 4 y así sucesivamente (se va doblando).
-
Si tuvieramos encendidos ya varios segmentos (por ejemplo, a y b, que significaría 1 + 2 = 3), para añadir el segmento c solo sería necesario sumar 4 (3 + 4 = 7). Para quitar un segmento, entonces restaríamos (ej.: 7 – 4 = 3; hemos apagado el segmento c).
-
Para hacer este ejercicio, se necesita utilizar un salto condicional. Se recomienda usar beq (branch if equal, esto es, saltar si son iguales), que apareció en dos ejercicios de L1. Se pone un ejemplo (si x1 = x2, se salta a la etiqueta seguir, en caso contrario, se continúa en la siguiente línea):
# Ejemplo: si x1 = x2, se salta a la etiqueta seguir
beq x1, x2, seguir
addi x3, x3, 1 # si no son iguales, se ejecuta esta instrucción
seguir:
# ...Notas:
-
El código que se entregue debe compilar. En caso contrario, el ejercicio se calificará con 0.
-
Tal y como se ha hecho en el Laboratorio, es recomendable que vaya haciendo alguna prueba mientras codifica en vez de hacer todo el ejercicio y luego probar.
-
Si ve que no le da tiempo a hacer todo el ejercicio, intente hacer al menos una parte del mismo (y que ésta funcione).
-
Un de los aspectos que se calificarán será la claridad del código. Es importante que se ajuste a lo indicado en el curso virtual, en Contenidos->Laboratorio->Comentarios y organización del código.
Como siempre ocurre al programar, existen infinitas soluciones. Pero en todas ellas se debe respetar la especificación
Este es el contenido del programa:
# Programa: cicloDisplay.asm
# Propósito: Cíclicamente, enciende los segmentos exteriores del display derecho y
# apaga los del izquierdo. Mantiene una variable contador del nº ciclo actual.
# Autor: Javier Macías del Campo
# Fecha: 04/10/2025
.eqv BASE_DISP 0xFFFF0010 #Direccion base de acceso a los displays
.eqv DISP_R 0 #Desplazamiento display derecho
.eqv DISP_L 1 #Desplazamiento display izquierdo
.eqv SEG_G 0x40 #Segmento g del display encendido (en binario: 0100 0000)
.eqv SEG_A_F 0x3F #Segmentos del a al f del display encendidos (en binario: 0011 1111)
.data
ciclo: .word 0 #variable indica el nº ciclo en el que se está
.text
li x1, BASE_DISP
li x4, SEG_G
inicio:
#actualizamos la variable del nº de ciclo
la x2, ciclo
lw x3, 0(x2)
addi x3, x3, 1
sw x3, 0(x2)
#inicializamos
li x2, 1 #contador del segmento, inicializado a 1 (segmento A)
li x3, 0 #acumulador segmentos encendidos display derecho (empezamos por todo apagado)
li x5, SEG_A_F #acumulador segmentos encendidos display izquierdo (empezamos por A a F encendidos)
cont:
sb x3, DISP_R(x1)
sb x5, DISP_L(x1)
beq x2, x4, inicio #si tocara el segmento G, hemos terminado un ciclo
add x3, x3, x2 #"encendemos" otro segmento más en el display derecho
sub x5, x5, x2 #"apagamos" otro segmento más en el display izquierdo
add x2, x2, x2 #siguiente segmento
j cont
#finalización programa (puesto por seguridad: no debería llegar aquí)
li a7, 10
ecall- Miguel Ángel de Miguel
- Javier Macías


L1: El simulador RARs
L2: Calculando expresiones
L3: Práctica 1-3. Variables
L4: Pract 2-1. E/S mapeada
L5: Práctica 2-2: Inst. ecall
L6: Prác 2-3: Cadenas
L7: Práct 3-1: Bucles y saltos
L8: Práct 3-2: Cadenas II
L9: Pract 4-1: Subrut. Nivel-1
L10: Pract 4-2: La pila
L11: Pract 4-3: Recursividad
L12: Pract 5-1. Heap. Listas
L13: RV32I: Resto de instrucciones
L14: Macros
L15: Entrada/Salida a bajo nivel
L16: Multiplicaciones/divisiones. Unit Tests 🚧
L17: Biblioteca stdio: salida a alto nivel 🚧
Los registros de estado y control (CSR)
Interrupciones y excepciones
Borrador
Soluciones a los ejercicios planteados en cada sesión para practicar:
Sesión L1
Sesión L2
Sesión L3
Sesión L4
Sesión L5
Sesión L6
Sesión L7
Sesión L8
Sesión L9
Sesión L10
Sesión L11
Sesión L12
Simulacro examen 1
GISAM. Ordinario. 2019-Dic-11
GISAM. Extra. 2020-Jul-03
GISAM. Ordinario. 2021-Ene-21
GISAM. Ordinario. 2022-Ene-10
GISAM. Extra. 2022-Jun-29
GISAM. Parcial 1. 2022-Oct-26
GISAM. Parcial 2. 2022-Nov-30
GISAM. Parcial 3. 2022-Dic-21
GISAM. Parcial 1. 2023-Oct-09
GISAM. Parcial 2. 2023-Nov-11
GISAM. Parcial 3. 2023-Dic-20
GISAM. Extra. 2024-Jun-17
GISAM. Parcial 1. 2024-Oct-14
GISAM. Parcial 2. 2024-Nov-13
GISAM. Parcial 3. 2024-Dic-16
GISAM. Extra. 2025-Jun-17
GISAM. Parcial 1. 2025-Oct-20
GISAM. Parcial 2. 2025-Nov-19
GISAM. Parcial 3. 2026-Enero-9
GISAM. Parcial 1. 2026-Oct-21
TELECO. Ordinario. 2019-Dic-13
TELECO. Extra. 2020-Jul-07
TELECO. Ordinario. 2021-Ene-21
TELECO. Extra. 2021-Jul-02
TELECO. Ordinario. 2022-Ene-10
TELECO. Extra. 2022-Jun-29
TELECO. Ordinario. 2023-Ene-10
TELECO. Extra. 2023-Jun-29
TELECO. Parcial 1. 2023-Oct-20
TELECO. Parcial 2. 2023-Nov-17
TELECO. Parcial 3. 2023-Dic-22
TELECO. Extra. 2024-Jun-17
TELECO. Parcial 1. 2024-Oct-10
TELECO. Parcial 2. 2024-Nov-21
TELECO. Parcial 3. 2024-Dic-19
TELECO. Extra. 2025-Jun-17
TELECO. Parcial 1. 2025-Oct-10
TELECO. Parcial 2. 2025-Nov-13
TELECO. Parcial 3. 2026-Ene-21
TELECO. Extra. 2026-Jun-25
TELECO. Parcial 1. 2026-Oct-09
Robótica. Ordinario. 2020-Jun-1
Robótica. Extra. 2020-Jul-13
Robótica. Ordinario. 2021-Mayo-20
Robótica. Extra. 2021-Junio-16
Robótica. Parcial 1. 2022-Feb-25
Robótica. Parcial 2. 2022-Abril-1
Robótica. Parcial 3. 2022-Mayo-6
Robótica. Parcial 1. 2023-Feb-27
Robótica. Parcial 2. 2023-Mar-27
Robótica. Parcial 3. 2023-May-08
Robótica. Parcial 1. 2024-Feb-26
Robótica. Parcial 2. 2024-Mar-20
Robótica. Parcial 3. 2024-May-06
Robótica. Extra. 2024-Junio-24
Robótica. Parcial 1. 2025-Feb-25
Robótica. Parcial 2. 2025-Mar-31
Robótica. Parcial 3. 2025-May-19
Robótica. Parcial 1. 2026-Feb-23
Robótica. Parcial 2. 2026-Abr-13
Robótica. Parcial 3. 2026-May-11
Datos. Parcial 1. 2023-Oct-09
Datos. Parcial 2. 2023-Nov-15
Datos. Parcial 3. 2023-Dic-20
Datos. Parcial 1. 2024-Oct-09
Datos. Parcial 2. 2024-Nov-13
Datos. Parcial 3. 2025-Ene-17
Datos. Parcial 1. 2025-Oct-15
Datos. Parcial 2. 2025-Nov-19