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
Другие вопросы по тегам