我对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
但是,当我汇编这些指令时,我遇到了一个超出范围错误的地址。任何人都可以指出我出错的地方,或许我应该做些什么来实现这个目标?
我已经明白了!这是一个更新的代码段,现在包含工作说明。我会留下这篇文章,以防它帮助其他人。
.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