Tutorial Mars
Tutorial Mars
Tutorial Mars
Figura1.AspectodeMarstraslacargadelcdigoejemplo1.s
MARS incluye en su distribucin una documentacin escueta pero til. Esta
documentacin est accesible desde el men Help o pulsando la tecla F1. Se
recomienda al alumno que se familiarice con la documentacin disponible. sta
incluye un listado de las instrucciones, pseudoinstrucciones, directivas y
llamadas al sistema disponibles en MARS.
En la figura 2 podemos ver que MARS nos muestra varias ventanas y paneles
de informacin:
La ventana titulada Text Segment nos permite ver el contenido del
segmento de texto, es decir, de la zona de memoria que contiene el
programa recin ensamblado. Cada lnea de la tabla se corresponde con
una palabra de 4 bytes, es decir: una instruccin de cdigo mquina. De
cada palabra, podemos ver su direccin, su contenido en hexadecimal,
la instruccin correspondiente tal y como la vera el procesador, y la
lnea de ensamblador que gener la instruccin. En el caso de
pseudoinstrucciones que generan varias instrucciones en cdigo
mquina, la lnea de ensamblador aparece asociada solo a la primera
instruccin real (como es el caso de las instrucciones almacenadas en
las direcciones 0x00400008 y 0x0040000c, que se generan a partir de la
lnea 11 de ejemplo1.s).
Figura2.AspectodeMarsdespusdeensamblarelcdigoejemplo1.s
En la ventana Data Segment podemos ver el contenido de la zona de
memoria que almacena los datos. De nuevo, la informacin aparece
separada en palabras de 4 bytes. Esta ventana tambin nos permite
modificar el contenido de la memoria escribiendo directamente en la
celda correspondiente.
Adems de simular el ISA de MIPS de forma suficientemente completa para
ejecutar programas simples, MARS tambin pone a disposicin del
programador un conjunto de llamadas al sistema. En una mquina real, estas
llamadas al sistemas seran provistas por el sistema operativo.
Las llamadas al sistema disponibles incluyen las necesarias para realizar la
entrada y salida. El listado completo de llamadas disponibles puede
consultarse en la documentacin de MARS (tecla F1 ).
1.1.Anatomadeunprogramaenensamblador
El programa est dividido en dos secciones: una de datos y otra de cdigo. Las
directivas .data y .text marcan el inicio de cada una de ellas, respectivamente.
En la seccin de datos se definen tres etiquetas. La primera de ellas (msg)
apuntar a una cadena que se usar posteriormente para mostrar un mensaje.
El mensaje se codifica con la directiva .asciiz, que define una cadena
codificada en ASCII y terminada en 0. Las dos restantes (var_a y var_b)
apuntan al espacio reservado para las dos variables. Este espacio se reserva y
se inicializa mediante las directivas .word.
.data
Msg: .asciiz una cadena de texto
Var_a: .word 17 #variable inicializada a 17
Var_b: .word 0x17 #variable inicializada a 23
.text
.globl main
Main:
Aqu empieza el cdigo del programa
1.2.Ejercicios
Ejercicio 1. Cargue, ensamble y ejecute el programa ejemplo1.s. Compruebe
que el mensaje mostrado en la pestaa Run I/O es El resultado es 5. Utilice
MARS para, conseguir que la salida del programa en la siguiente ejecucin sea
El resultado es 40.
Ejercicio 2. Modifique el programa ejemplo1.s para que, en vez de sumar el
contenido de las variables var_a y var_b, le pregunte cada vez al usuario qu
nmeros sumar. (Consulta la tabla de llamadas al sistema para saber cmo se
piden nmero por pantalla).
Ejercicio 3. Escriba un programa para preguntar al usuario el valor de cuatro
variables (a, b, c y d) y debe calcular y mostrar el resultado de (a*b) +(c-d).