Академический Документы
Профессиональный Документы
Культура Документы
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
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
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