- Back to Home »
- Resúmenes »
- Práctica 1
Posted by : Oscar Rosado Romero
lunes, 29 de abril de 2013
Practica
1
La practica 1 trata
sobre el manejo de mars y del lenguaje ensamblador para el procesador mips de
32 bits.
Empecemos con una introducción del entorno del
programa:
1) Nuevo archivo
2) Cargar archivo
3) Guardar archivo
4) Guardar archivo con otro nombre
5) Ensambla el archivo
6) Ejecuta las instrucciones
7) Ejecuta solo una instrucción
8) Vuelve una instrucción atrás
9) Pausa la ejecución del programa
10) Detiene la ejecución del programa
11) Vuelve a la instrucción inicial
12) Ayuda
11) Vuelve a la instrucción inicial
12) Ayuda
13) Ajusta la velocidad de ejecución de las instrucciones
14) Salida del código
15) Ventana de registros
16) Código ensamblador
17) Pantalla ejecución
Como
introducción realizaremos el ejercicio propuesto en prácticas, haremos una
pequeña introducción sobre cómo manejar el MARS:
a)
Ejecutamos
el entorno MARS, previamente descargado.
b)
Una
vez listo, pulsamos “Abrir archivo” (número 2 en la introducción) y abrimos el
programa “Fibonacci.asm”
c)
Cargamos
el programa y lo ensamblamos. (Número 5 en la introducción)
d)
Buscamos la
ubicación y los valores de datos iniciales del programa.
e)
Seleccionamos la
casilla de permitir pseudo-instrucciones y verificación en el menú de
configuración.
f) Modificamos el valor de la velocidad de
ejecución de las instrucciones (número 13 en la introducción) y asignamos 10
Instrucciones/Segundo.
g) Ejecutamos el programa. (Número 6 en la
introducción)
En la ventana RUN I/O(Número 14 en la introducción), se presentará lo siguiente:
En la ventana RUN I/O(Número 14 en la introducción), se presentará lo siguiente:
Que, como podemos deducir,
es la secuencia de Fibonacci, con el “1” como primer valor y el “4181”como el
último.
h) Ahora, vamos a establecer un punto de interrupción en la primera instrucción de la subrutina que imprime los resultados:
Para ello hacemos “click” en la casilla de verificación que tenga la
dirección
<0x00400060 = 4194400ten>.
i) Restablecemos (Numero 11 en la introducción) y volvemos a ejecutar el programa. Éste se detendrá en la instrucción que hemos marcado.
j) Hacemos doble “click” en una de las dos posiciones de memoria, lo que nos permitirá introducir valores por teclado.
k) Cambiamos ligeramente el resultado, borramos lo que había en la ventana RUN I/O y volvemos a ejecutar el programa para que continúe desde el punto de interrupción. Así, la salida del programa, incluirá el valor que hemos introducido por teclado, en vez del número calculado por Fibonacci.
i) Restablecemos (Numero 11 en la introducción) y volvemos a ejecutar el programa. Éste se detendrá en la instrucción que hemos marcado.
j) Hacemos doble “click” en una de las dos posiciones de memoria, lo que nos permitirá introducir valores por teclado.
k) Cambiamos ligeramente el resultado, borramos lo que había en la ventana RUN I/O y volvemos a ejecutar el programa para que continúe desde el punto de interrupción. Así, la salida del programa, incluirá el valor que hemos introducido por teclado, en vez del número calculado por Fibonacci.
Hecho esto,
procederemos a editar el programa para que nos de la longitud de la secuencia de
números:
a) Pulsamos “Editar” para proceder a la edición del programa.
a) Pulsamos “Editar” para proceder a la edición del programa.
b) Eliminamos los
"#" de las líneas 12 -19 para hacer operativo esta sección del
código. (Pues las almohadillas se usan para indicar que lo que hay entre ellas
es un comentario, y evade esa parte del código)
c) Éste nuevo fragmento
de código permitirá pedir al usuario cuantos términos de la sucesión de
Fibonacci quiere que se muestren por pantalla
d) Para introducir un número, debemos modificar la línea “15”, colocando en ella la siguiente instrucción:
d) Para introducir un número, debemos modificar la línea “15”, colocando en ella la siguiente instrucción:
li $v0, ???. Donde el número 5
corresponde al “Read Integer” o “→ Lectura de número entero”. Esto se puede
encontrar en el menú ayuda (número 12 en la introducción) y abriendo luego la
pestaña “syscalls” donde se muestran las distintas llamadas al sistema según el
valor en $v0.
Esto
es todo en la introducción sobre MARS, ahora es tiempo de usar nuestros
conocimientos para modificar el programa de forma que la sucesión use 3 números
como “valores iniciales” en vez de 2 como hace la sucesión de Fibonacci. El
código quedaría de la siguiente forma: