Curso Libre de Linux

Duración
Del 10 Al 26 de junio 2009 (3 semanas)
Horario:
De 10a.m. a 12 p.m.
Dias: Miércoles y viernes
Costo: Q.500.00
Salon: Laboratorio 215

MAS INFORMACION AQUI

Curso Libre de XNA

Duración
Del 10 Al 26 de junio 2009 (3 semanas)
Horario:
De 2 p.m. a 4 p.m.
Dias: Martes y jueves
Costo: Q.500.00
Salon: Laboratorio 215

MAS INFORMACION AQUI

Frases

Si deseas empezar y desarrollar algo grandioso, no necesitas millones de dólares de capitalización. Necesitas suficiente pizza y Diet Coke en la nevera, una PC barata y trabajo y dedicación para realizar tu idea.
John Carmack

Laboratorio 04 - Conociendo MIPS

Ciencias de la computación III - Estructuras de máquinas

Laboratorio #04 - Conociendo MIPS

Adrián Catalán

Propósito

 

  • Familiárizarse con el simulador SPIM
  • Iniciar a programar en assembler de MIPS

 

Conociendo MIPS

Para este laboratorio vamos a realizar un programa de MIPS que reciba 2 números del teclado e imprima lo siguiente:

  • Suma
  • Resta
  • And
  • Or
  • El mayor de dos números

Cada operacion debe ser implementada con una función que reciba los dos números como parámetros. (Nota mental: recordarme de los registros $a0 y $a1)
Por ejemplo, para realizar la suma debe implementar una función suma que reciba como parámetros los n&ucaute;eros a sumar, efectúe la suma y guarde el resultado en el registro $v0. El resultado de la función será impreso por el programa que mando a llamar la función, en este caso main, y no por la función.

 

Para ayudarlo un poco, recibirá código de un main y algunas funciones útiles para su programa, revise el código y entiendalo para que se le facilite el trabajo.
Puede buscar en google ó consultar el Quick Reference de SPIM

.data
    msgwel:        .asciiz "\nBienvenidos al laboratorio numero 6\n\n"
    msgpn:         .asciiz "Ingrese el primer numero:"
    msgsn:         .asciiz "Ingrese el segundo numero:"
    msgadd:        .asciiz "El resultado de la suma:"
    msgsub:        .asciiz "\nEl resultado de la resta es:"
    msgand:        .asciiz "\nEl resultado de el and es:"
    msgor:         .asciiz "\nEl resultado de el or es:"
    msgmax:        .asciiz "\nEl numero mayor es:"

.text
    main:
        la $a0 msgwel  	#print_str("Bienvenidos al laboratorio numero 7")
        li $v0 4        	#print_str
        syscall

        la $a0 msgpn    	#print_str("Ingrese el Primer Numero")
        li $v0 4        	#print_str
        syscall

        li $v0 5        	#$s0 = read_int()
        syscall
        add $s0 $v0 $0

        la $a0 msgsn    	#print_str("Ingrese al segundo numero")
        li $v0 4        	#print_str
        syscall

        li $v0 5        	#$s1 = read_int()
        syscall
        add $s1 $v0 $0

        #Suma
        la $a0 msgadd  	#print_str("El resultado de la suma:")
        li $v0 4        	#print_str
        syscall
        add $a0 $s0 $0
        add $a1 $s1 $0
        jal suma
        add $a0 $v0 $0
        li $v0 1
        syscall

        #Resta
        la $a0 msgsub  	#print_str("El resultado de la resta:")
        li $v0 4        	#print_str
        syscall
        add $a0 $s0 $0
        add $a1 $s1 $0
        jal resta
        add $a0 $v0 $0
        li $v0 1
        syscall

        #miand
        la $a0 msgand  	#print_str("El resultado de el and:")
        li $v0 4        	#print_str
        syscall
        add $a0 $s0 $0
        add $a1 $s1 $0
        jal miand
        add $a0 $v0 $0
        li $v0 1
        syscall

        #mior
        la $a0 msgor    	#print_str("El resultado de el or:")
        li $v0 4        	#print_str
        syscall
        add $a0 $s0 $0  	#$a0 = mior(s0, s1)
        add $a1 $s1 $0
        jal mior
        add $a0 $v0 $0
        li $v0 1
        syscall

        #max
        la $a0 msgmax  	#print_str("El numero mayor es:")
        li $v0 4        	#print_str
        syscall
        add $a0 $s0 $0
        add $a1 $s1 $0
        jal max
        add $a0 $v0 $0
        li $v0 1
        syscall

        j exit

    exit:
        li $v0 10
        syscall

    # Aca comienzan sus funciones, le recomiendo que entienda el codigo
    # que esta arriba para que se le facilite el trabajo

    suma:                    #funcion suma
        jr $ra               #regresamos a donde se mando a llamar esta funcion

    resta:                   #funcion resta
        jr $ra

    miand:                   #funcion and
        jr $ra

    mior:                    #funcion or
        jr $ra

    max:                     #funcion max
        jr $ra 

 

Entrega

La entrega se realizará a través del GES el día Viernes 13 de febrero del 2009, durante el periíodo del laboratorio. Debe enviar un archivo llamado seccionCarnet.s conteniendo únicamente sus funciones. NO envie main y NO le cambie nombre a las funciones.
 


Quién está en línea

Actualmente hay 0 usuarios y 1 invitado en línea.

Usuarios nuevos

  • cralph
  • dieguapo
  • alkabedam
  • EshkaOlssen
  • javier