String 查找字符串mips程序集中的空格数
所以我在.data中有一个字符串。字符串是“e8 e r e r c e r g”。 我想找到字符串中的空格数。它存储在$a0中,但存储在不同的文件中,我正在编写查找空格的方法的文件和带有字符串的文件都使用“include”功能链接 即使我认为这个想法是正确的,我的代码也不起作用 到目前为止我的代码String 查找字符串mips程序集中的空格数,string,assembly,spaces,mips32,String,Assembly,Spaces,Mips32,所以我在.data中有一个字符串。字符串是“e8 e r e r c e r g”。 我想找到字符串中的空格数。它存储在$a0中,但存储在不同的文件中,我正在编写查找空格的方法的文件和带有字符串的文件都使用“include”功能链接 即使我认为这个想法是正确的,我的代码也不起作用 到目前为止我的代码 lb $s1, ($a0) la $s2 ' ' li $v0, 0 findNumSpaces: beq $s1, $zero, printNumSpaces beq $s1, $s2, is
lb $s1, ($a0)
la $s2 ' '
li $v0, 0
findNumSpaces:
beq $s1, $zero, printNumSpaces
beq $s1, $s2, isSpace
addi $a0, $a0, 1
lb $s1, ($a0)
j findNumSpaces
isSpace:
addi $v0, $v0, 1
addi $a0, $a0, 1
lb $s1, ($a0)
j findNumSpaces
printNumSpaces:
li $v0, 1
syscall
行addi$a0,$a0,1lb$s1,($a0)不这样做吗?它这样做了,但是当它找到一个空格时,它跳过它,然后它不返回,它返回到循环的开始。现在呢?
la$s2'
是“加载地址…空格字符”。。。甚至不应该编译,但是MARS有一个仁慈的汇编程序,它忽略了稍微错误的语法,并从中产生了一些东西。如果希望在s2
中使用值32,则应为li$s2',
。然后,printNumSpaces
将覆盖v0
中的值(其中是空格计数)。在每条指令上使用调试器和单步,在每一步之后慢慢检查CPU状态,这样的错误应该是显而易见的(就在syscall之前,您将突然丢失计数器值);它使答案无效。如果你想在下面添加一个修订版本,那仍然是在编辑中问一个新问题。使用调试器检查您的修复程序,如果它有效,请将其作为答案发布。