Facultad de Ingeniera E.A.P. Ingeniera en Informtica y Sistemas Curso: Arquitectura de Computadoras
PRCTICA N 2: OPERACIONES BSICAS CON MIPS
OBJETIVOS
Familiarizacin con la programacin de operaciones bsicas en ensamblador y la representacin de
distintos tipos de datos utilizando el ensamblador del MIPS.
OPERACIONES ARITMTICAS BSICAS
MIPS es una mquina de arquitectura carga-almacenamiento: para usar un dato almacenado en memoria, primero hay que pasarlo a un registro. Las operaciones aritmticas bsicas en MIPS se caracterizan por: Utilizar tres registros (2 para los operandos y 1 para el resultado). Sintaxis: operacion resultado op1 op2 El ltimo de los operandos puede ser una constante de 16 bits (inmediato). Ejercicio 1. Suma: Cdigo C: Int a, b, c; c=a+b; Cdigo MIPS: # Suponiendo que los datos a, b, c # estn asignados a los registros # $s0, $s1, $s2 respectivamente: add $s2, $s0, $s1 # $s2 = $s0 + $s1 .globl main # Directiva de etiqueta global .text li $v0, 5 syscall move $t0,$v0 #a li $v0, 5 syscall move $t1, $v0 #b main: #etiqueta main addu $t2, $t0, $t1 move $a0, $t2 li $v0,1 syscall li $v0,10 # Llamada al sistema de tipo "exit" syscall Si solo podemos sumar dos registros en cada instruccin, cmo hacemos operaciones ms complicadas? Usando la prctica anterior sume dos nmeros y ms de 4 nmeros Ejercicio 2. Resta: Cdigo C: int a, b, c, d, e; a = ( b + c ) ( d + e ); Cdigo MIPS: # Suponiendo que los datos a, b, c, d, e # estn asignados a los registros # $s0, $s1, $s2, $s3 y $s4, respectivamente: add $t0, $s1, $s2 # $t0 = $s1 + $s2 add $t1, $s3, $s4 # $t1 = $s3 + $s4 sub $s0, $t0, $t1 # $s0 = $t0 - $t1
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN
Facultad de Ingeniera E.A.P. Ingeniera en Informtica y Sistemas Curso: Arquitectura de Computadoras Modificar el programa MIPS anterior para evitar el uso de los registros temporales $t0 y $t1 Ejercicio 3: (Adicional) Dado el siguiente ejemplo de programa ensamblador: .data dato: .byte 3 #inicializo una posicin de memoria a 3 .text .globl main # debe ser global main: lw $t0,dato($0) Indica las etiquetas, directivas y comentarios que aparecen en el mismo