0

例如,我有一个带有这个字符串的程序:

str: .asciiz "abcdefghijklmnopqrstuvwxyz"

然后我在字符串的末尾加上另一个字母:

la $t0, str
sb $t1, 26($t0) # the letter a  is stored into $t1

这使得编辑后的 ​​str 为:

str: .asciiz "abcdefghijklmnopqrstuvwxyza"

我的问题是如何将数字 26 增加到 27,因为我有一个循环不断接受用户输入的字符并将其添加到字符串的末尾,但我一直用新字母替换字符串的最后一个字母。我想在每次循环一次时将 26 递增 1,以便字符串不断延长,而不是被其他字母替换。我唯一能想到的是

sb $t1, $t2($t0)
add $t2, $t2, 1

这是行不通的。

4

1 回答 1

0

这使得编辑后的 ​​str 为:

str: .asciiz "abcdefghijklmnopqrstuvwxyza"

这并不完全正确(请参阅我对您之前问题的回答)。.asciiz暗示一个以 NULL 结尾的字符串,但您只是用'a'.


add $t2, $t2, 1

这是行不通的。

add指令将寄存器相加。如果要向寄存器添加立即数,请使用addior 。addiu例如:

addiu $t2,$t2,1  # add 1 to $t2, ignoring potential overflows
于 2013-04-24T09:20:14.780 回答