Iterating through and modifying a string in MIPS

assembly, loops, mips, string

Solution

Figured it out. That line I suspected should have been

sb $s2 ($s1)

Problem

I'm trying to write a method to do a caesar shift on a string of text in the MIPS assembly language. My encryption method is as follows: ``` encryptMessage: la $s0, message #s0 will hold message that will be iterated through lw $t1, key #s1 will hold the key to shift by li $t0, 0 #t0 will be iterator, starting at 0 encryptionLoop: add $s1, $s0, $t0 #$s1 = message[i] lb $s2, 0($s1) #Loading char to shift into $s2 beq $s2, $zero, exit #Breaking the loop if we've reached the end: http://stackoverflow.com/questions/12739463/how-to-iterate-a-string-in-mips-assembly add $s2, $s2, $t1 #Shifting the character by the key amount la $s1, ($s2) #Changing the character in message to the shifted character addi $t0, $t0, 1 #i++ j encryptionLoop #Going back to the beginning of the loop ``` However, in the exit method where I print out the supposedly encrypted message, it just prints out the message as it was originally entered. My code isn't "remembering" that I changed the characters and I can't figure out how to get it to remember. I suspect this line ``` la $s1, ($s2) #Changing the character in message to the shifted character ``` has something to do with it but I don't know how to fix it.

Original source

Related problems