Tengo que hacer un programa en ensamblador(mips32 usando el compilador MARS4.5) que dada una cadena de caracteres y el tamaño de esta(la sección de datos nos la dan), pedir al usuario un código y cambiar sumando a cada letra de la cadena ese valor  e imprimir de nuevo la cadena modificada por ahora llevo esto (lo primero son comentario de como deberia funcionar )
###################################################
#Paso 1 : Valores iniciales
#Guardo en $t1 la direccion de la cadena 1
#Guardo en $t1 la direccion de la cadena 2
#Pedimos codigo por teclado y guardo en $t3
#Guardo en $t4 tam
#Paso 2 : Bucle (accedo al elemento de cadena 1, sumo el codigo y guardo en cad2)
#BUCLE: 
#	Cargo $t5 el contenido de $t1
#	Sumo a $t5 el codigo $t3 y lo guardo en $t5
#	Almaceno $t5 en ($t2)
#	Sumo 1 a $t1
#	Sumo 1 a $t2
#	resto uno al contador
#	si el contador es distinot de cero salto a BUCLE
#Paso 3 : Sacar por pantalla la cadena 2
###################################################
.text
start :		#Inicio programa
	la	$t1, cad1
	la	$t2, cad2
	la 	$a0, entrada
	li	$v0, 4
	syscall
	li	$v0, 5
	syscall
	add	$t3, $0, $v0
	lw	$t4, tam
BUCLE:	lb	$t5, ($t1)
	add 	$t5, $t5, $t3
	sb	$t5, ($t2)
	addi	$t1, $t1, 1
	addi	$t1, $t2, 1
	subi 	$t4, $t4, 1
	bnez	$t4, BUCLE
	
	la	$a0, ($t2)
	li	$v0, 4
	syscall
	
exit:		#Fin del programa
	la	$v0, 10
	syscall
.data
cad1 :	.asciiz	"cadenainicial"
entrada:.asciiz "Introduzca codigo "
cad2 :	.space  14	#reserva espacio en memoria para 14 byts
tam:	.word	13
que funciona para na letra sola pero para una cadena mas larga de error y no entiendo por que
Alguien que me pueda ayudar??
Ya esta solucionado gracias a todo