Я кодирую в MIPS и пытаюсь заменить каждый соответствующий символ в строке другим символом, предоставленным пользователем.Моя проблема - фактическая замена.Я пытаюсь использовать sb, чтобы переместить заменяющего персонажа в правильное место, но, похоже, это не работает.
while:
lb $t2, 0($t5) #Loads the next byte of the string into
temporary storage
beqz $t2, exit #If the next byte is empty, we're done
beq $t2, $t1, replacer #If the next character matches, replace the
character
replacerContinue:
addi $t0, $t0, 1 #Increments the address for the modded array
addi $t5, $t5, 1 #Increments original string
j while
.
.
.
.
replacer:
sb $t4, 0($t0) <---- #Stores the replacement character at the bit
in the current offset for the modified string
j replacerContinue
syscall
Вот немного ключа для регистров, я знаю, что это немного беспорядок:
$ t0 = Модифицированная версия исходной строки, которая должна содержать новый символвместо старого символа
$ t1 = символ, который пользователь хочет заменить в строке
$ t2 = байт в строке для $ t5
$t4 = Символ, выбранный пользователем для замены старого символа на
$ t5 = Исходная строка.Он был введен пользователем ранее, и я храню его в компоненте .data
Я ожидал, что когда я использую sb $ t4, 0 ($ t0), он сохранит символ замены в соответствующемпятно старого символа (обратите внимание, что я увеличиваю адреса в конце цикла, поэтому мне не нужно добавлять смещение).
Вместо этого я не могу сказать, происходит ли что-нибудь.Я использую MARS, и когда я смотрю на значение регистра, чтобы увидеть, происходит ли замена в $ t0, он показывает только значение адреса.
Спасибо за вашу помощь.Дайте мне знать, если я смогу предоставить дополнительную информацию, или если вы заметите какие-либо плохие практики в написании моего кода.Я все еще очень плохо знаком с MIPS.