Vous êtes sur la page 1sur 21

Ensamblador MIPS

El entorno de trabajo para la realizacin de las


prcticas ser en un simulador MIPS, lo puede
obtener de la siguiente direccin Web:
http://sourceforge.net/projects/spimsimulator/fil
es
/
Disponible para varias plataformas.

Introduccin
Para la prcticas se utilizar un simulador
basado en MIPS R2000 / R3000

Registros

Uso de los registros


$zero tiene cableado el valor numrico cero.
Los registros $a0, $a1, $a2 y $a3 se utilizan para pasar

parmetros a subrutinas.
$v0 y $v1 se utilizan para devolver valores de subrutinas.
El registro $ra contiene la direccin de retorno y se utiliza
para volver despus de una llamada a subrutina.
Los registros $s0, $s1, $s2, $s3, $s4, $s5, $s6 y $s7 son
registros salvados.
Los registros $t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8 y $t9
son registros temporales.
El registro $gp contiene el puntero global.
El registro $sp contiene el puntero de pila.
El registro $fp contiene el puntero de marco de pila.
El registro $at est reservado para el uso por el
ensamblador y no debe ser usado por los programadores.
Los registros $k0 y $k1 estn reservados para su uso por el

Uso de registros
Nombrado de los registros:
Nombre simblico:
Ejemplo: $t0

Nmero de registro (0..31).


Ejemplo: $8

Modelo de la memoria

Llamadas al sistema

Son instrucciones que permiten obtener un servicio


del sistema operativo

Tipos de datos
Integer: representa nmeros enteros

Float 32 bits, double 64 bits


ASCII 8 bits

Ensamblador MIPS
Cada lnea del programa en ensamblador
contiene una nica sentencia, ejemplos:
# esto es un comentario hasta fin de lnea
.data
Add $t0, $s0, $s1

Directivas
Directivas

Uso

.data

Los elementos se almacenan en el segmento de


datos

.text

Los elementos se almacenan en el segmento de


cdigo

.ascii "cadena
caracteres"

Cadena de caracteres que no terminan en


carcter nulo

.asciiz "cadena de Cadena de caracteres que terminan en nulo


caracteres"
.byte 1,2,3

Almacena bytes en memoria

.half 250

Almacena media palabras en memoria

.word 50000

Almacena palabras en memoria

.float 1,3, 2.45

Almacena valores flotantes en memoria

.double 3e21

Almacena double en memoria

.space 10

Reserva espacio de 10 bytes

.extern etiqueta n

Declara etiqueta

.globl

Declara etiqueta como global

Ejemplos de instrucciones
Aritmticas

add rd, r1, r2


Salta condicional
beq r1, r2
Carga y almacenamiento
lw $r1, desplazamiento($r2)
sw r1, desplazamiento($r2)

Estructura de un programa MIPS


#Declaracin de datos
.data
#Cdigo fuente, seccin de cdigo del usuario
.text
.globl main #declaracin de etiqueta main de tipo global
main:
#
# Aqu va el programa.
#
#Terminar programa
li $v0,10
syscall
.end main

Hola mundo MIPS!!!!

s archivos se capturan en cualquier editor de texto, extensin. s

.rdata # Inicio de seccin de datos


texto: .asciiz "Hola Mundo!\n" # Cadena identificada por etiqueta "texto"
.text # Comienzo de seccin de cdigo de usuario
.globl main # La etiqueta "main" se hace conocida a nivel global
main:
la $a0, texto # carga direccin base de la cadena en $a0
li $v0,4
# $v0 <-- 4 : funcin de syscall: print_string
syscall
# Llamada al sistema. Imprime todos los
# caracteres desde direcc. "texto"
# hasta caracter fin de cadena (NULL)
li $v0, 10
# funcin de syscall: fin de segmento
syscall
# llamada al sistema
.end

Declaracin de tipos de datos

Enteros - word

wNum1:.word
wNum2:.word
Half
hNum1 .half
Byte
bNum1 .byte

50000
-10000
5000
5

String

sPalab: .asciiz
sPalab2: .ascii

"Hola\n " #Termina null


"Saludos\n " #Sin null

Punto flotante

pi:
.float
3.141592654
radio:
.double 12.34522
Constantes

Verdadero = 1
Falso = 0

Instrucciones de carga
Permiten almacenar valores a los registros y a
memoria
Instruccin

Descripcin

l<tipoDato> RegDest, mem

Carga el valor a un registro

li RegDest, numInmediato

Carga un valor inmediato al


registro

la RegDest, mem

Carga una direccin de memoria


al registro

s<tipo> RegOrigne, mem

Carga el contenido el registro a


una localidad de memoria

Ejemplo
Tomando los

siguiente valores

Realizando las

operaciones

Vous aimerez peut-être aussi