所以我试图在MIPS中实现一种toUpper函数。该函数可以访问两个变量:$ a0,它是字符串的起始地址,$ a1是字符串的长度。我正在尝试遍历字符串并将其转换为大写。有谁知道我哪里出错了?
我认为我实际上无法将起始地址中的第一个字符加载到变量中。
to_upper:
li $t0, 0 #initialize counter
li $t1, 0
Loop:
addi $t0, $t0, 1
sgt $t5, $t0, $a1
beqi $t5, 1, Done
slti $t5, $t1, 97
beqi $t5, 1, Loop
sgti $t5,$t1, 122
beqi $t5, 1, Loop
subi $t1, $t1, 32
j Loop
Done:
jr $ra
答案 0 :(得分:2)
最好放置
addi $t0, $t0, 1
在循环结束时。
所以,就像这样:
...
Loop:
addi $t5, $a0, $t0
lb $t6, 0($t5)
...set $t6 to upper...
sb $t6, 0($t5)
addi $t0, $t0, 1
blt $t0, $a1, Loop
Done:
...
答案 1 :(得分:1)
$a0
。您需要使用$a0
从lb
加载值,修改它们,然后将其存储回来。