/ / Iterowanie i modyfikowanie ciągu znaków w MIPS - ciąg, pętle, złożenie, mipsy

Iterowanie i modyfikowanie ciągu w MIPS - ciąg, pętle, złożenie, mipsy

Próbuję napisać metodę, aby zrobić przesunięcie cezara na ciąg tekstu w języku asembler MIPS. Moja metoda szyfrowania jest następująca:

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

Jednak w metodzie wyjścia, gdzie wydrukujępodobno zaszyfrowaną wiadomość, po prostu drukuje wiadomość tak, jak została pierwotnie wprowadzona. Mój kod nie "pamięta", "że zmieniłem znaki i nie mogę wymyślić, jak je zapamiętać. Podejrzewam tę linię

la $s1, ($s2)       #Changing the character in message to the shifted character

ma z tym coś wspólnego, ale nie wiem, jak to naprawić.

Odpowiedzi:

0 dla odpowiedzi № 1

Domyśliłam się. Ta linia, którą podejrzewałam powinna była

sb $s2 ($s1)