You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIPS汇编循环查找字符串空格:程序陷入循环无法退出

问题出在空格的比较方式上!

嘿,我一眼就瞅到你代码里的问题啦——你在比较的时候搞混了地址和实际字符值,这才导致循环永远跳不出去。

让我拆解下问题:

  • la $t1, space 这条指令是把space这个字符串的内存地址加载到$t1里,而不是空格字符本身的ASCII值(32)。
  • 而lb $a0, 0($t0)是从name里取出当前位置的字符ASCII值,你拿一个地址数值和字符数值做beq比较,这俩永远不可能相等,循环自然就死在里面了!

修复方案有两种,选哪种都行:

方案1:先把空格字符加载到$t1里

修改初始化部分,把space指向的字符读进$t1:

li $t0, 0
la $t0, name
la $t1, space
lb $t1, 0($t1)  # 新增这行,把空格字符加载到$t1
# loop to find space
loop2:
lb $a0, 0($t0)
#comparing char to space
beq $a0, $t1, exit
addi $t0, $t0, 1
j loop2
exit:

方案2:直接用空格的ASCII值比较

既然空格的ASCII是32,直接写数值进去更省事:

li $t0, 0
la $t0, name
# loop to find space
loop2:
lb $a0, 0($t0)
#comparing char to space (ASCII 32)
beq $a0, 32, exit
addi $t0, $t0, 1
j loop2
exit:

这样修改后,循环就能正确识别到空格字符,跳转到exit啦!

内容的提问来源于stack exchange,提问作者Samantha Hollensbe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:44