Sesión VI Saltos condicionales

Anuncio
Alumno:
Alumno:
Grupo:
Sesión VI
Saltos condicionales
El objetivo de esta sesión es comprobar y practicar lo estudiado en teorı́a acerca de los
saltos condicionales y las instrucciones relacionadas con estos como la slt.
1. Teniendo en cuenta la regla siguiente,
tres segmentos sA, sB y sC de longitudes A, B y C respectivamente, pueden formar un
triángulo si y sólo si se cumplen simultáneamente las siguientes desigualdades:
A<B+C
B <A+C
C <A+B
elabora una subrutina que determine si tres segmentos dados (que se introducen en el
segmento de datos como A, B y C) pueden constituir un triángulo.
El comienzo del programa es como sigue, completalo con la subrutina y la impresión por
pantalla de la respuesta (desde el programa principal). Observa que los parámetros que
se le pasan a la subrutina son: $a0=A, $a1=B, $a2=C, los lados del posible triángulo. No
olvides incluir un segmento de datos con los valores asociados a las etiquetas A, B y C.
# programa triangulo.s
#
# segmento de texto
.text
.globl main
main:
la $a0,A
lw $a0,0($a0)
# la direccion de la etiqueta A en a0
# el contenido de A en a0
la $a1,B
lw $a1,0($a1)
# la direccion de la etiqueta B en a1
# el contenido de B en a1
la $a2,C
lw $a2,0($a2)
# la direccion de la etiqueta C en a2
# el contenido de C en a2
jal triangulo
...
Contesta a las siguientes cuestiones :
¿Cuántas etiquetas has utilizado dentro de la subrutina (contando la de comienzo
de subrutina)? ¿Para que sirven las etiquetas?
¿A qué dirección apunta cada una de tus etiquetas? Indı́calo una a una.
¿Cuántos saltos condicionales has necesitado dentro de la subrutina? ¿En cuántos de
ellos has necesitado previamente una instrucción slt? ¿Qué hace esta instrucción?
Prueba el programa con un triangulo de lados A=4, B=8 y C=14. Ejecútalo paso
a paso. ¿Cuántos saltos condicionales se evalúan realmente (en tu código) con este
ejemplo? ¿En cuántos de ellos se salta a la etiqueta de destino?
Prueba ahora el programa con un triangulo de lados A=14, B=8 y C=4. Ejecútalo
paso a paso. ¿Cuántos saltos condicionales se evalúan realmente (en tu código) con
este ejemplo?
¿Cúal es la codificación binaria una de las instrucciones bne de tu subrutina? ¿En
qué campos se descompone?
¿Cuál era la etiqueta anterior? ¿A qué dirección de memoria se salta? ¿Cómo se
hace la traducción de la etiqueta a la dirección destino de salto? Muéstralo para este
ejemplo.
Descargar