You are on page 1of 4

#Practica 1 Arquitectura de Computadores #"08/03/2011" #Ingenieria de Sistemas #Este es una ejemplo deprueba para que los estudiantes tengan

una idea de como m anejar el menu de la aplicacion #y como manejar matrices. #En este ejemplo dependiendo de la opcin seleccionada se presenta un mensaje en p antalla y vuelve al menu principal del programa #unicamente cuando se selecciona la opcin de suma de matrices se da la posibilida d para que ingresen una matriz (pidiendo filas y columnas), #luego de que la matriz es ingersada, se regresa nuevamente al menu peincipal de l programa. .data #Mensaja del Bienvenida y Menu de la aplicacion matriz1: .space 1600 de memoria donde se guardarn los operandos matriz2: .space 1600 matrizR: .space 1600 vectorI: .space 80 vectorR: .space 80

#Separamos los espacios #y los resultados.

men1: .ascii " \n Programa para el trabajo con matrices " #Definimos los mensajes que se van a usar en la aplicacin. .ascii " \n Ingenieria de Sistemas Ude@ " .ascii " \n 21/03/2011 " .ascii " \n\n Seleccione una opcion: " .ascii " \n 1- Suma entre matrices. " .ascii " \n 2- Ordenamiento de un vector. " .ascii " \n 3- Verificacion de los elementos del vector o la mat riz dentro de un intervalo. " .ascii " \n 4- Salir. " .asciiz " \n\n Ingrese el numero correspondiente a la operacion a realizar: " #Mensajes para la pedida de valores de los elementos men2: .asciiz "\n Ingrese el numero de columnas " men3: .asciiz "\n Ingrese el numero de filas " men4: .asciiz "\n Ingrese el numero de elementos " men5: .asciiz "\n Ingrese el valor del elemento: " men6: .asciiz "\n Ingrese el limite inferior: " men7: .asciiz "\n Ingrese el limite superior: " #Mensajes para la validacion de valores ingresados men8: .asciiz "\n Esta no es una opcion valida, elija nuevamente: " men9: .asciiz "\n El valor debe estar entre 2 y 20 " #Mensajes para presentar los resultados. men10: .asciiz "\n El valor esta en el intervalo " men11: .asciiz "\n El valor no esta en el intervalo "

.text .globl main main: li $v0, 4 la $a0,men1 syscall #presentamos el menu de la aplicacin

li $a2,0 li $a3,5 valida_opt: li $v0,5 syscall move $a1,$v0 #Verificamos que la opcin ingresada este permitid a jal FuncionEntre beq $v0,$zero,Opt_valid li $v0,4 la $a0, men8 es entonces la pedimos nuevamente syscall j valida_opt Opt_valid: li $t1,1 validar que sea una opcin valida) beq $a1,$t1, Pedir_matriz li $t1,2 beq $a1,$t1, Pedir_Vector li $t1,3 beq $a1,$t1, Intervalo li $t2,4 beq $a1,$t1, Salir fuera: la $a0, men10 sys: syscall j Salir #Recibe en $a2 el limite inferior del intervalo #Recibe en $a3 el limite superior del intervalo #Recibe en $a1 el valor a validar en el intervalo #Devuelve en $v0 un 0 si esta en el intervalo, un 1 en caso contrario #No incluye los l mites del intervalo en la comparaci n FuncionEntre: addi $sp, $sp, -8 sw $t0, 4($sp) #Utilizamos la pila para garantizar los valores de $t0 y $t1 cuando volvamos al punto donde sw $t1, 0($sp) #nos llamaron slt $t1,$a2,$a1 slt $t0,$a1,$a3 add $v0,$t0,$zero add $v0,$v0,$t1 slti $v0,$v0,2 lw $t1, 0($sp) #Recuperamos nuevamente los valores de $t0 y $t1 lw $t0, 4($sp) jr $ra #Si ingresaron una opcin no valida entonc

#Comparamos la opcin ingresada (luego de #para saber que operacin realizar.

Pedir_matriz:

li $v0,4 la $a0,men2 syscall addi $v0,$zero,5 #El usuario ingresa el orden de la matriz, escog e el numero de las columnas syscall li $a2, 1 li $a3, 21 add $a1, $zero, $v0 jal FuncionEntre #Validamos que los valores ingresados esten entr e 2 y 20. bne $v0, $zero, Pedir_matriz add $s7, $zero, $a1 filas: li $v0,4 la $a0,men3 syscall addi $v0,$zero,5 #El usuario ingresa el orden de la matriz, escog e el numero de filas syscall add $a1, $zero, $v0 jal FuncionEntre #Validamos que los valores ingresados esten entr e 2 y 20. bne $v0, $zero,filas add $s6, $zero, $a1 la $a0,men5 la $a1, matriz1 #Cargamos la direccion a partir de la cual se va a guardar la matriz mul $t9, $s6, $s7 jal pedir_datos j main #Despues de guardar la matriz volvemos al menu p rincipal Pedir_Vector: li $v0,4 en pantalla. la $a0,men3 syscall j main Intervalo: li $v0,4 en pantalla. la $a0,men6 syscall j main #Al seleccionar la opcin 2 se imprime un mensaje

#Al seleccionar la opcin 3 se imprime un mensaje

#En a1 va la direccion de memoria base #En a0 la direccin del mensaje a imprimir #El $t9 tiene el numero de elementos a pedir #Subrutina utilizada para pedir los elementos de la matriz pedir_datos: li $v0,4 syscall #Se imprime un mensaje de acuerdo con lo que se haya cargado en $a0 desde el punto donde nos llamen addi $v0,$zero,5 syscall #Se solicita el numero entero equivalant e al componente de la matriz pedido sw $v0, 0 ($a1) addi $a1, $a1, 4

subi $t9, $t9,1 bne $t9, $zero, pedir_datos umnas) de la matriz jr $ra Salir: li $v0,10 syscall

#Se piden tantos datos como (filas)x(Col

You might also like