例如,我有一个带有此字符串的程序:
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
哪个不起作用。
答案 0 :(得分:0)
这使编辑后的str成为:
str: .asciiz "abcdefghijklmnopqrstuvwxyza"
这不完全正确(见my answer for your earlier question)。 .asciiz
表示以NULL结尾的字符串,但您只是用'a'
覆盖了NULL终止符。
add $t2, $t2, 1
哪个不起作用。
add
指令将寄存器加在一起。如果要向寄存器添加立即值,请使用addi
或addiu
。例如:
addiu $t2,$t2,1 # add 1 to $t2, ignoring potential overflows