Práctica 1
Duración: Una sesión.
Herramientas: Simulador MARS (necesita java para funcionar),
Práctica de introducción al MARS.pdf, Fibonacci.asm. (Todo esto se puede
encontrar en el Campus Virtual).
Descripción:
En esta
práctica se aprende a usar el MARS. Lo único que hay que hacer es seguir lo que
dice el documento en formato .pdf de la práctica. Al finalizar el primer
contacto con el lenguaje de ensamblador nos pusimos a realizar una serie de
ejercicios (en concreto 11), en los que se nos exigía distintos objetivos.
Conforme íbamos haciendo ejercicios la dificultad de estos se veía
incrementada (Ver practica 2).
Ejemplo de familiarización con el entorno MARS:
• Restablecer
y volver a
ejecutar
el programa, que se detiene en el punto de
interrupción.
Ejemplo de familiarización con el entorno MARS:
Este programa ( Fibonacci.asm) calcula la secuencia de números de
Fibonacci (Código Da Vinci), de la que se obtiene el número Phi (número áureo):1.61803399.
Nos centraremos en la modificación del contenido
de la memoria. (La modificación de un valor de registro es exactamente igual.)
Realicemos el siguiente ejemplo:
• Establezca un punto de interrupción
(Breakpoint) en la primera instrucción
de la subrutina que imprime los resultados. Utilice la casilla de verificación
a la izquierda de la instrucción cuya dirección es 0x00400058
• Restablecer


• Haga doble clic en una de las posiciones de
memoria que contiene los números de Fibonacci computada. La celda se resaltará
y aceptará la entrada de datos por medio del teclado, similar a una hoja de
cálculo.
Introduzca un valor sensiblemente diferente, y
pulse la tecla Intro o hacer clic fuera de la celda para indicar que el cambio
se haya completado. Por ejemplo: la dirección de memoria 0x10010020 actualmente
contiene datos 0x00000022 = 34.
• Borre la ventara RUN I/O con el botón Clear
• Haga clic en
para continuar
desde el punto de interrupción. La salida del programa incluye el valor de su
entrada en lugar del número calculado de Fibonacci.

En el siguiente vídeo podréis ver los pasos
uno a uno:
Una vez expuesta la primera práctica y haber hecho un breve
resumen/introducción aquí resumiré lo que creo que es más importante con
respecto al uso del MARS:
a) Para cualquier duda con respecto a comandos del programa, lo
mejor es mirar la ayuda que se mira pulsando F1 o el icono de la parte superior
‘’
‘’. En ella vienen todas las instrucciones del MARS, la explicación
de lo que hacen y como hay que escribir el comando. También en la ayuda se
puede encontrar todos los tipos de llamadas al sistema (syscall). La ayuda está
en inglés, pero son palabras simples de no mucha dificultad y no creo que den
lugar a problemas poniendo las que no sepáis en un traductor.

b) Para ver que es lo que hace un programa y lo que hacen cada una
de las instrucciones lo mejor es ir pasándolas una a una pulsando el botón una
vez que el programa ha sido ensamblado. De esta manera se puede ver paso a paso
como funciona el programa y las instrucciones. También es la mejor manera de
ver donde falla el programa para poder corregir los errores.
c) Si tras mucho pensar no lográis o no sois capaces de resolver
un problema o hacer un ejercicio, no dudes en avasallar a preguntas al
profesor. Os contestará cualquier duda que tengáis y os ayudará a resolver
vuestros problemas (al menos, así era el nuestro y nos decía reiteradamente que
le preguntáramos las dudas, supongo que debería ser lo mismo para los demás).
d)
Seguro que lo habréis escuchado antes, realizad comentarios de cada paso que
realice el programa, la programación es un lenguaje prácticamente simbólico,
por lo que realizar correcciones cuando el programa falla es más complicado que
en otros lenguajes de alto nivel.
Dificultades:
Lo más complicado de esta práctica es el último apartado, en el
que hay que modificar el programa Fibonacci para que haga la suma con tres
números en vez de con dos.
Aunque pueda parecer a primera vista algo complicado, no lo es
tanto. Lo mejor que se puede hacer es mirar poco a poco que es lo que hace el
programa para sumar dos números. De hecho, tan sólo hay que añadir dos o tres
instrucciones para que use un tercer registro para guardar el número extra y añadir
otra suma, ya que el MARS sólo puede sumar dos números.
FAQS
¿Qué es ensamblador?
Es un lenguaje de programación ''entendible'' que interpretan instrucciones máquinas.
Es un lenguaje de programación ''entendible'' que interpretan instrucciones máquinas.
¿Para qué sirve ensamblador?
Ayuda
al desarrollo de lenguajes de más alto nivel facilitando la creación de nuevos
programas. Todo lenguaje es convertido a ensamblador antes de ser procesado por
el procesador, finalmente será convertido a código máquina. También es usado
como lenguaje de programación para componentes de diseño sencillo como pueden
ser procesadores para electrodomésticos o bien para aplicaciones que requieren
un alto nivel de optimización.
No conozco ningún lenguaje de programación, ¿me
recomiendas empezar por ensamblador?
Es
recomendable iniciarse en la programación con algún lenguaje de alto nivel que
facilite el aprendizaje y una vez comprendido su funcionamiento y lógica,
adentrarse a niveles más bajos.
¿Dónde puedo encontrar documentación para el ensamblador
MIPS?
Si
usas el programa simulador MARS dispondrás de una ayuda muy completa desde el
menú "Help" donde se detallan instrucciones básicas,
pseudoinstrucciones, directivas, llamadas al sistema y exepciones, todo lo
necesario para comenzar.
¿Puedo programar ensamblador MIPS para cualquier máquina?
El
ensamblador para MIPS visto en clase es específico para máquinas que usan el
MIPS
R3000. Este modelo cuenta con un juego de instrucciones que es el que empleamos
para programar y podremos trasladar a cualquier máquina que contenga dicho
juego de instrucciones sin importar otros aspectos.
¿Donde se almacenan los datos con los que trabaja los
programas en ensamblador?
Principalmente
en registros del procesador para además así aumentar su velocidad de ejecución
aunque también se hace uso de la memoria principal.
¿Debería comentar mis programas?
Siempre
es recomendable hacer los programas lo más claro y simples posibles para que
otro programador pueda seguir con nuestro trabajo además nos ayudará para
reconocer más rápidamente nuestro propio trabajo en un futuro. Los comentarios
pueden ayudar a aclarar algoritmos complejos.
¿Siempre es necesario usar la directiva .globl?
No,
solo es necesario usarlo cuando nuestro programa necesita comunicarse con otro
programa. Un ejemplo sería un programa que reciba un dato por parámetro de
forma externa.
No hay comentarios:
Publicar un comentario