viernes, 30 de mayo de 2014

Ejemplos de introducción: ENSAMBLADOR MIPS.

Empezamos con la programación en ensamblador MIPS con esta entrada que contiene unos ejemplos bastante sencillitos para empezar. Si no se sabe nada acerca del repertorio de instrucciones de MIPS es recomendable leer algo acerca de ellas, al menos qué es lo que hacen, pues si no os será imposible realizar los ejercicios posteriores de una complejidad mayor.

Os dejo tres ejemplos básicos para empezar a conocer las instrucciones más usuales add, lw, sw, beq, j... En la próxima entrada serán un poco más difíciles ;)

Suma de dato1 y dato1 almacenada en la variable sum.
.data
dato1:	.word 2				
dato2:	.word 5				
sum:	.word 0				

.text
main:	lw $8, dato1($0)		# cargamos el primer dato en el registro $8
	lw $9, dato2($0)		# cargamos el segundo dato en el registro $9
	add $10, $8, $9			# sumamos los dos registros y el resultado lo almacenamos en $10
	sw $10, sum($0)			# almacenamos el resultado ($10) en su variable (sum)
	
fin:	li $2, 10			# cargamos parametro necesario para terminar programa
	syscall				# llamada al sistema que termina un programa

Escribir en la variable max el valor máximo contenido en las variables dato1 y dato2.
.data
dato1:	.word 2				
dato2:	.word 5				
max:	.word 0				

.text
main:		lw $8, dato1($0)	
		lw $9, dato2($0)	
		slt $10, $8, $9		
		beq $10, $0, d1		
		sw $9, max($0)		
		j fin				
d1:		sw $8, max($0)		
fin:		li $2, 10			
		syscall	

Suma de los valores almacenados en un vector.
.data
tam: .word 8
datos: .word 2, 4, 6, 8, -2 -4, -6 -7
res: .word 0
.text
main:  lw $8, tam($0)
  la $9, datos
  sub $11, $11, $11
loop:  lw $10, 0($9)  
  add $11, $11, $10
  addi $9, $9, 4
  addi $8, $8, -1
  beq $8, $0, salir
  j loop
salir:  sw $11, res($0)
  li $2, 10
  syscall

No hay comentarios:

Publicar un comentario