Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: el conquistador13 en 27 Febrero 2017, 19:25 pm



Título: CIfrado cesar ensamblador
Publicado por: el conquistador13 en 27 Febrero 2017, 19:25 pm
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 )

Código:
###################################################
#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