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

MIPS程序问题咨询:10整数数组求和代码故障排查

MIPS代码错误排查与修正

下面是对你提供的MIPS代码的错误分析,以及满足需求的修正版本:

关键错误(未达需求)

  • 你的需求是让用户输入10个数组元素,但现有代码里arr直接硬编码了固定值1,2,...,10,完全没有实现输入逻辑,这是最核心的问题。

语法错误

  • 全局入口声明写错了:globl main必须写成.globl main(开头的点不能少),否则汇编器无法识别main作为程序的入口符号。

注释与变量不匹配的小问题

  • la $t3, arr的注释写的是“load address of array into t4”,实际是把数组地址加载到t3,注释里的变量名写错了。
  • slt $t4, $t0, $t2的注释描述成“$t4 = i < sum ? 1 : 0”,但实际是判断i < 10($t2存的是循环次数10),注释逻辑描述错误。

满足需求的完整修正代码

.data
arr: .word 0:10       # 定义10个整数的数组,初始值设为0
prompt: .asciiz "请输入第%d个整数: "
msg: .asciiz "Result: "
.text
.globl main

main:
    addi $t0, $zero, 0   # 初始化循环计数器i=0
    addi $t1, $zero, 0   # 初始化sum=0
    ori $t2, $zero, 10   # 循环次数固定为10
    la $t3, arr          # 把数组的基地址加载到t3

input_loop:
    slt $t4, $t0, $t2    # 判断i是否小于10,是则t4=1,否则0
    beq $t4, $zero, calc_sum  # 输入完10个数后跳转到求和逻辑

    # 打印输入提示
    addi $v0, $zero, 4
    la $a0, prompt
    syscall
    # 打印当前输入的序号(i+1)
    addi $v0, $zero, 1
    addi $a0, $t0, 1
    syscall
    # 打印换行,让输入更清晰
    addi $v0, $zero, 11
    li $a0, '\n'
    syscall

    # 读取用户输入的整数
    addi $v0, $zero, 5
    syscall
    # 将输入的数存入数组当前位置
    sw $v0, 0($t3)

    addi $t0, $t0, 1     # 计数器i加1
    addi $t3, $t3, 4     # 数组指针往后移4字节(一个整数的大小)
    j input_loop

calc_sum:
    addi $t0, $zero, 0   # 重置计数器i为0
    la $t3, arr          # 重新加载数组基地址
sum_loop:
    slt $t4, $t0, $t2
    beq $t4, $zero, print_result
    lw $t4, 0($t3)
    add $t1, $t1, $t4    # 把当前数组元素加到sum里
    addi $t0, $t0, 1
    addi $t3, $t3, 4
    j sum_loop

print_result:
    # 打印结果提示字符串
    addi $v0, $zero, 4
    la $a0, msg
    syscall
    # 打印求和的结果
    addi $v0, $zero, 1
    add $a0, $t1, $zero
    syscall
    # 正常退出程序
    addi $v0, $zero, 10
    syscall

.end main

修正说明

  1. 数组改成预留空间的写法.word 0:10,不再硬编码初始值,而是让用户输入填充。
  2. 添加了输入提示和用户输入的逻辑,循环读取10个整数存入数组。
  3. 修复了.globl main的语法错误。
  4. 把输入、求和、打印拆成三个独立的循环,代码结构更清晰。
  5. 增加了程序退出的syscall 10,避免部分MIPS模拟器出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:15:50