#mips #mars-simulator
#мипс #mars-simulator #mips
Вопрос:
Я кодирую в 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 = исходная строка. Это было введено ранее пользователем, и я сохранил его в .компонент данных
Я ожидал, что когда я использую sb $ t4, 0 ($ t0), он сохранит символ замены в соответствующем месте старого символа (обратите внимание, что я увеличиваю адреса в конце цикла, поэтому мне не нужно добавлять смещение).
Вместо этого я не могу сказать, происходит ли что-нибудь. Я использую MARS, и когда я смотрю на значение регистра, чтобы увидеть, происходит ли замена в $ t0, он показывает только значение адреса.
Спасибо за вашу помощь. Дайте мне знать, если я могу предоставить какую-либо дополнительную информацию, или если вы заметили какие-либо плохие практики в написании моего кода. Я все еще новичок в MIPS.
Комментарии:
1. Вам нужно посмотреть в окне просмотра сегментов данных на адрес, который
$t0
содержится в данный момент. Вы даже можете настроить его для отображения данных в виде символов ASCII.2. Спасибо! Я попробую.