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

MIPS分支语句失效致无限循环:小于输入值的偶数求和程序异常

MIPS汇编无限循环问题修复

核心错误原因

你代码中$t0寄存器存储的是.data段中变量N的内存地址,而非用户输入的整数值。后续所有$t0和迭代变量$t1的比较操作,本质是在拿内存地址和偶数迭代值对比,完全不符合业务逻辑,因此永远触发不了跳出循环的分支条件。

修复方案

  • 在将用户输入存入N变量后,新增指令lw $t0, 0($t0),将N对应的整数值加载到$t0寄存器中即可。

修复后完整代码

.data   
    
N:       .word 0
Result:  .word 0

    .text
    
    
    .globl main
initialize:
    li $v0, 5      # 获取用户输入整数
    syscall
    la $t0, N
    sw $v0, 0($t0)
    lw $t0, 0($t0) # 新增:将N的数值加载到$t0,而非保留地址
    
    li $t1, 2
    li $t2, 0
main:                    
    blt $t0, $t1, fin2
fori:
    add $t2, $t2, $t1 # t2 += t1
    add $t1, $t1, 2   # t1 += 2
    
    slt $t5, $t1, $t0
    bne $t5, $zero, fori
fin:
    li $v0,1              # 输出计算结果
    move $a0, $t2
    syscall
    
    li  $v0, 10
    syscall

fin2:
    li $v0,1              # 输入小于2时输出0
    move $a0, $zero
    syscall
    
    li  $v0, 10
    syscall

验证效果

输入7时,程序会计算2+4+6=12并正常输出,循环到$t1为8时自动触发跳出条件,不会出现无限循环问题。

内容的提问来源于stack exchange,提问作者Caleb Ernst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:27:04