Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将字符串的特定字符移动到其结尾MIPS_String_Assembly_Character_Mips - Fatal编程技术网

String 将字符串的特定字符移动到其结尾MIPS

String 将字符串的特定字符移动到其结尾MIPS,string,assembly,character,mips,String,Assembly,Character,Mips,我想知道如何将字符串中的某些类型的字符推到其末尾,例如: 我有 对于循环,我想扫描字符串,如果遇到一个数字,它将被放在最后一个位置,因此输出将是“HLL WRLD300” 我已经完成了字符串长度的编码,我也知道如何扫描每个字符,但我似乎无法识别数字,也无法将其推到最后 这是字符串长度的代码: length: li $v0, 0 lbu $t1, ($a0) for: beqz $t1, end_for addi $v0, $v0, 1

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

对于循环,我想扫描字符串,如果遇到一个数字,它将被放在最后一个位置,因此输出将是“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  

提前感谢您的帮助

解决问题的简单方法是使用“bltu”(小于的分支)查看您正在查看的字符是小于0还是大于9。如果它满足这两个条件之一,它就不能是一个数字,所以把它推到一个缓冲区。之后,您可以做同样的事情,但这次找到值介于0和9之间(包括0和9)的字符,并将它们推送到缓冲区(将数字添加到字符串的末尾)


如果您不喜欢使用缓冲区,您可以使用移位法:遍历字符串,当您找到一个数字时(使用上述技术),您保存该数字,并遍历字符串的其余部分,将所有内容向左移动一个索引。到达末尾后,添加保存的数字。这样做,直到你已经旅行了你的字符串的原始长度和瞧,你完成了

最简单的方法可能是为结果字符串使用单独的缓冲区。在原始字符串上迭代一次并将所有非数字复制到另一个缓冲区,然后再次在原始字符串上迭代并复制所有数字。好的,这可以做到,但我如何识别数字?有没有一种不使用缓冲区的方法,只需处理字符串?在字符串上迭代,当你找到一个数字时,你将它后面的所有字符向左移动一步,然后将数字放在末尾。谢谢你,我使用了不带缓冲区的方法,效果很好
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