-
Notifications
You must be signed in to change notification settings - Fork 21
Examen: 2023_01_10:TELECO

- Tiempo: 2h
- Tipo de examen: Presencial, en los Laboratorios Linux de la URJC. Entrega realizada a través de Aula Virtual
- Grado: TELECO
- Descripción: Enunciado del examen y SOLUCIONES
Está implementada en el fichero doble.s (ESPECIFICACIONES):
#----------------------------------------------------------------
#-- Funcion doble(n): Calcula el doble del numero recibido
#-------------------------------
#-- ENTRADAS:
#-- * a0: Numero a doblar
#-- SALIDAS:
#-- * a0: Numero doble (2 * a0)
#----------------------------------------------------------------
.globl doble
.text
doble:
#-- Es una función hoja, por lo que no hay que guardar la direccion
#-- de retorno en la pila
add a0, a0, a0
retPrograma principal utilizado para comprobar el funcionamiento de la función anterior (doble()):
Fichero main.s (ESPECIFICACIONES):
#----------------------------------
#-- Programa principal:
#----------------------------------
.include "so.s"
.data
#-- Mensajes indicados en la ESPECIFICACION
msg1: .string "Introduzca un numero entero: "
msg2: .string "El doble de "
msg3: .string " es "
.text
#------ Pedir un numero al usuario
#-- Imprmir los mensajes pedidos (ESPECIFICACION)
la a0, msg1
li a7, PRINT_STRING
ecall
#-- Lectura del numero entero (n)
li a7, READ_INT
ecall
#-- a0 contiene el numero introducido por el usuario
#-- Lo guardamos en s0 para no perderlo
mv s0, a0
#-- Calcular el doble del numero
jal doble
#-- a0 contiene el doble
mv s1, a0 #-- Guardar el doble en s1
#-- Imprimir el resultado:
la a0, msg2
li a7, PRINT_STRING
ecall
#-- Imprimir el numero original
mv a0, s0
li a7, PRINT_INT
ecall
#-- Imprimir el mensaje 3
la a0, msg3
li a7, PRINT_STRING
ecall
#-- Imprimir el resultado
mv a0, s1
li a7, PRINT_INT
ecall
#-- Terminar
li a7, EXIT
ecall Fichero cuadruple.s (ESPECIFICACIONES):
#----------------------------------------------------------------
#-- Funcion cuadruple(n): Calcula el cuadruple del numero recibido
#-------------------------------
#-- ENTRADAS:
#-- * a0: Numero a cuatriplicar
#-- SALIDAS:
#-- * a0: Numero cuatriplicado (4 * a0)
#----------------------------------------------------------------
.globl cuadruple
.text
#-- Es una funcion intermecia, por lo que hay que crear la pila
#-- para guardar la direccion de retorno
cuadruple:
#-- Crear la pila
addi sp,sp, -16
#-- Almacenar direccion de retorno
sw ra, 12(sp)
#-- Calcular el doble
jal doble
#-- En a0 obtenemos el doble
#-- Calcular otra vez el doble
jal doble
#-- En a0 tenemos el cuadruple
#-- Recuperar la direccion de retorno de la pila
lw ra, 12(sp)
#-- Eliminar pila
addi sp,sp, 16
ret
Esta función se encuentra dentro del fichero main2.s (ESPECIFICACIONES)
#----------------------------------
#-- Programa principal:
#----------------------------------
.include "so.s"
.data
#-- Mensajes indicados en la ESPECIFICACION
msg1: .string "Introduzca un numero entero: "
msg2: .string "El cuadruple de "
msg3: .string " es "
.text
#------ Pedir un numero al usuario
#-- Imprmir los mensajes pedidos (ESPECIFICACION)
la a0, msg1
li a7, PRINT_STRING
ecall
#-- Lectura del numero entero (n)
li a7, READ_INT
ecall
#-- a0 contiene el numero introducido por el usuario
#-- Lo guardamos en s0 para no perderlo
mv s0, a0
#-- Calcular el doble del numero
jal cuadruple
#-- a0 contiene el doble
mv s1, a0 #-- Guardar el doble en s1
#-- Imprimir el resultado:
la a0, msg2
li a7, PRINT_STRING
ecall
#-- Imprimir el numero original
mv a0, s0
li a7, PRINT_INT
ecall
#-- Imprimir el mensaje 3
la a0, msg3
li a7, PRINT_STRING
ecall
#-- Imprimir el resultado
mv a0, s1
li a7, PRINT_INT
ecall
#-- Terminar
li a7, EXIT
ecall Según las ESPECIFICACIONES, todas las constantes necesarias para los servicios del sistema operativo se deben situar en el fichero so.s:
#-- Código de los servicios del sistema operativo
#-- Incluir estos archivos en tus programas
#-- para acceder a ellos fácilmente, y hacerlos más
#-- legibles
.eqv PRINT_STRING 4
.eqv READ_STRING 8
.eqv READ_INT 5
.eqv PRINT_INT 1
.eqv PRINT_CHAR 11
.eqv READ_CHAR 12
.eqv EXIT 10TODO
- Katia Leal Algara
- Juan González-Gómez (Obijuan)


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 🚧
Macros
Entrada/Salida a bajo 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
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
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
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