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

MIPS汇编代码运行提示blt指令未知报错如何解决

问题原因与解决方法

报错核心原因

你遇到的blt指令未知报错,是因为blt属于MIPS伪指令,部分基础MIPS汇编器/旧版本模拟器(如低版本SPIM)默认未开启伪指令扩展支持,无法直接识别该指令。

解决方法

  • 方法1:用基础MIPS指令替换blt,无需修改模拟器配置
    blt $t0,$t1,calSum的功能等价于以下两条基础指令:
slt $at, $t0, $t1    # 如果$t0 < $t1,$at设为1,否则设为0
bne $at, $zero, calSum  # $at不为0则跳转
  • 方法2:开启模拟器的伪指令支持
    如果你使用的是MARS、高版本SPIM模拟器,直接在设置项中开启「伪指令扩展支持」即可,默认状态下该选项通常是开启的。

代码其他需要修正的问题

你提供的代码还存在其他隐含bug,修改后才能正常运行:

  1. 字符串定义错误:Message用.ascii定义,没有字符串结束符\0,打印时会输出乱码,需要改为.asciiz " The Sum is:"
  2. 除法指令写法问题:第10行的div $t5,$t0,$t3是三操作数除法伪指令,如果汇编器不支持伪指令,需要改为基础除法写法:
div $t0, $t3    # 用$t0除以$t3,商存lo寄存器,余数存hi寄存器
mflo $t5        # 取出商存入$t5
  1. 笔误修正:注释中出现的$so应为$s0、$ao应为$a0,不影响运行但便于代码阅读。

修正后完整可运行代码

.data
   A:      .word 4,8,12,16,20,24,28
   Message:   .asciiz " The Sum is:"
.text
   li $t0,0                # 加载立即数0到$t0,作为数组下标
   li $t1,7                # 加载立即数7到$t1,数组总长度
   li $t3,2                # 加载立即数2到$t3,用于判断下标是否为偶数
   la $t2,A                # 加载数组A的首地址到$t2
   li $s0,0                # 加载立即数0到$s0,存储累加和
calSum:
   div $t0, $t3            # $t0除以$t3
   mfhi $t4                # 取出余数存入$t4
   bnez $t4,X2             # 余数不为0(下标为奇数)则跳转到X2
   lw $t6,0($t2)           # 取出当前数组元素存入$t6
   add $s0,$s0,$t6         # 累加到总和$s0
X2:
   addi $t2,$t2,4          # 数组指针移动到下一个元素
   addi $t0,$t0,1          # 下标加1
   slt $at, $t0, $t1       # 替换原blt指令的第一条基础指令
   bne $at, $zero, calSum  # 替换原blt指令的第二条基础指令
   li  $v0, 4              # 系统调用:打印字符串
   la  $a0, Message
   syscall
   move $a0,$s0            # 把累加和存入$a0准备打印
   li $v0,1                # 系统调用:打印整数
   syscall
   li $v0, 10              # 系统调用:退出程序
   syscall  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:06:05