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

使用MARS 4.5编写MIPS汇编BEQ指令遇无效PC值错误求助

解决MARS中BEQ指令的"invalid program counter value"错误

你的问题根源在于把执行代码的标签Stampa放在了.data数据段。MIPS架构中,程序计数器(PC)只能指向.text代码段的指令地址,跳转到.data段的内存地址会触发"invalid program counter value"错误。

修正后的代码

.data
Message_1: .asciiz "I numeri sono uguali"

.text
main:
    addi $t1, $zero, 3
    addi $t2, $zero, 3

    beq $t1, $t2, Stampa  # 现在跳转到.text段内的标签

    # 如果不相等,执行退出程序
    li $v0, 10
    syscall

Stampa:
    li $v0,4
    la $a0, Message_1
    syscall
    
    # 打印完后退出程序
    li $v0, 10
    syscall

关键修改点

  • 将Stampa代码块从.data段移动到.text段,确保所有可执行指令都处于代码段范围内
  • 在main的分支路径和Stampa执行完毕后添加li $v0,10+syscall的退出调用,避免程序执行完后出现异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:14:53