MIPS - Как выполнить сдвиг на строку?
Я очень новичок в программировании MIPS и застрял в проблеме, которую пытался запрограммировать. Я понимаю, что то, что я пытаюсь сделать, может быть глупым, но терпите меня, пожалуйста! Вот описание того, что я пытаюсь сделать.
Допустим, у меня есть эта строка: "~~Hello World!". Я хочу получить строку "Hello World!" сдвигая эту строку влево на два символа. На данный момент моя ближайшая попытка выполнить такую операцию такова:
Пусть регистр $t0 содержит строку "~~ Hello World!". Я хочу выполнить сдвиг влево на 2 бита для этой строки и сохранить в регистр $t1.
.data
output1: .asciiz "The value in $t1 is: "
.text
sll $t1, $t0, 2 # attempt at shifting left by 2 bits
li $v0, 4
la $a0, output1
syscall # print "The value in $t1 is: "
li $v0, 4
move $a0, $t1
syscall # print the contents of the register $t1
Тем не менее, когда я собираю эти инструкции, меня встречают с ошибкой адреса вне диапазона. Кто-нибудь может указать, где я иду не так, и, возможно, что я должен сделать, чтобы добиться этого?
1 ответ
Я понял это! Вот обновленный фрагмент кода, который теперь содержит рабочие инструкции. Я оставлю этот пост на случай, если он кому-нибудь поможет.
.data
output1: .asciiz "The value in $t1 is: "
.text
add $t0, $t0, 2 # shifts the string left by 2 bits (CORRECT)
li $v0, 4
la $a0, output1
syscall # print "The value in $t1 is: "
li $v0, 4
move $a0, $t1
syscall # print the contents of the register $t1