Вы находитесь на странице: 1из 5

Práctica tema 1

La práctica trata sobre el lenguaje para microprocesadores MIPS, mediante el entorno de


programación MARS. MARS esta escrito en java, por lo que es multiplataforma, a continuación
explicaremos un poco sobre el entorno MARS y los ejercicios realizados.

El entorno MARS:

Al abrir la aplicación tenemos una ventana como la que vemos arriba, el menú que se
encuentra en la zona posterior permite crear nuevos archivos,abrir archivos existentes,
guardar,etc
También permite ensamblar el código para realizar una simulación del programa (es el icono de
la llave inglesa y el destornillador) e ir avanzando ,ejecutando línea a línea el código mediante
las flechas, o bien ejecutarlo.
Además, tenemos tres zonas, que hemos marcado en cudrados de colores
Cuadro amarillo: Indica los registros de memoria a los que recurre MIPS y el valor almacenado
en cada valor
Azul: Nos indica que va haciendo el programa, en el ejemplo se ve el resultado, tiene 2
pestañas
-Mars Messages: Indica las incidencias en el programa
-Run I/O: Indica las entradas y salidas del programa
Rojo: En esta zona, es donde escribiremos el código del programa y donde lo ejecutaremos,
tiene también 2 pestañas:
-Edit: Es donde escribiremos el código
-Execute: Donde ejecutaremos el código, al ensamblar iremos directamente ahí a
probar nuestro programa

Hay 2 ventanas nuevas, en la primera aparecen los comandos y en la segunda las posiciones
de memoria y los valores

A continuación, exponemos ejemplos de algunos ejercicios:

Ejercicio 1
“En los registros s0,s1,s2 y s3 cargar un vector de media palabra, array_media”
.data
array_media:.half 10,20,30,40
.text
.globl main
main:
la $t1,array_media
lh $s0,0($t1)
lh $s1,2($t1)
lh $s2,4($t1)
lh $s3,6($t1)

Ejercicio 2

“En los registros s0,s1,s2 y s3 cargar un vector de palabra completa,array_palabra”


.data
array_palabra:.word -1,-2,-3,-4
.text
.globl main
main:
la $t1,array_palabra
lw $s0,0($t1)
lw $s1,4($t1)
lw $s2,8($t1)
lw $s3,0x0c($t1)

Ejercicio 3

“Añadir en el código del problema 1, las líneas necesarias para mostrar por pantalla solo los
elementos impares del array tratado”
.text
.globl main
main:
la $t1,array_media
lh $s0,0($t1)
lh $s1,2($t1)
lh $s2,4($t1)
lh $s3,6($t1)
move $a0,$s1
li $v0,1
syscall
move $a0,$s3
li $v0,1
syscall

Ejercicio 4
“Añadir en el código del problema 2, las líneas necesarias para mostrar por pantalla solo los
elementos pares del array tratad, separados por una coma”
.data
array_palabra:.word -1,-2,-3,-4
texto: .ascii ","
.text
.globl main
main:
la $t1,array_palabra
lw $s0,0($t1)
lw $s1,4($t1)
lw $s2,8($t1)
lw $s3,0x0c($t1)
move $a0,$s0
li $v0,1
syscall
la $a0,texto
li $v0,4
syscall
move $a0,$s2
li $v0,1
syscall

Ejercicio 5
“Escribe el código de un programa que sume dos valores almacenados en memoria. Estos dos
valores reciben los nombres Numero1 y Numero2 y sus valores son respectivamente 100 y -10.
Para el resultado realice una reserva de espacio en memoria a continuación de Numero1 y
Numero2 (Utilice la directiva .space). Para la carga de memoria en registros use t0 para
Numero1 y t1 para Numero”
.data
texto: .asciiz "Resultado:"
Numero1: .word 100
Numero2: .word -10
resultado: .space 4
.text
.globl main
main:
lw $t0, Numero1
lw $t1, Numero2
lw $t2, resultado
add $t2, $t0, $t1
la $a0, texto
li $v0,4
syscall
move $a0,$t2
li $v0,1
syscall

Recomendaciones para nuevos alumnos: Esta práctica puede ser la más


complicada ya que requiere un nivel básico de programación y si no llegas a entenderla lo
suficientemente bien tendrás dificultades a la hora de realizar la práctica.

Вам также может понравиться