将字符串的特定字符移动到MIPS的末尾

时间:2015-06-03 11:40:31

标签: string assembly character mips

我想知道如何将字符串中的某些类型的字符推送到它的末尾,例如: 我有

.data 

string: .asciiz "H3LL0 W0RLD"

有一个循环我想扫描字符串,如果遇到一个数字,它会被放在最后一个位置,所以输出将是" HLL WRLD300"

我已经完成了字符串长度的编码,我也知道如何扫描每个字符,但我似乎无法识别数字并将其推到最后。

这是字符串长度的代码:

length:

li $v0, 0
lbu $t1, ($a0)          
for: 
    beqz $t1, end_for   
    addi $v0, $v0, 1    

    addi $a0, $a0, 1    
    lbu $t1, ($a0)      

    j for
end_for:

    jr $ra  

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

解决问题的简单方法是使用" bltu" (分支小于)查看您正在查看的字符是否小于0或大于9.如果它满足其中任何一个条件,则它不能是数字,所以将其推送到缓冲区。之后,您可以执行相同的操作,但这次会找到值介于0到9之间的字符,并将它们推送到缓冲区(将数字添加到字符串的末尾)。

如果你不热衷于使用缓冲区,你只需使用移位方法:通过字符串,当你找到一个数字(使用上述技术)时,你保存该数字,并迭代其余的数字字符串,将一个索引向左移动。到达结尾后,添加保存的数字。这样做,直到你走完你的弦的原始长度,瞧,你已经完成了!