title: Iterating through and modifying a string in MIPS
body: <p>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:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>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</p>
  
  <pre><code>la $s1, ($s2)       #Changing the character in message to the shifted character
  </code></pre>
  
  <p>has something to do with it but I don't know how to fix it.</p>