MIPS - Как выполнить сдвиг на строку? - PullRequest
0 голосов
/ 01 марта 2019

Я очень плохо знаком с программированием на 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 Ответ

0 голосов
/ 01 марта 2019

Я понял это!Вот обновленный фрагмент кода, который теперь содержит рабочие инструкции.Я оставлю этот пост на тот случай, если он кому-нибудь поможет.

.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
...