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

MIPS汇编程序问题:用户提示无法显示及三整数平均值计算

MIPS汇编提示不显示及代码错误修正

问题分析

  1. 提示信息无法显示:打印字符串需使用系统调用号4(li $v0,4),但你开头误用了读整数的系统调用5,导致prompt字符串根本没被执行打印操作。
  2. 平均值计算错误:MIPS的div指令是将被除数和除数传入寄存器后,商默认存在$lo寄存器,你直接给$a0赋值的写法不合法,需要用mflo取出商再打印。
  3. 遗漏总和数值输出:代码只打印了总和的提示字符串,没有输出计算好的总和结果。
  4. 字符串拼写错误:Avergae应为Average。

修正后的完整代码

.data
    prompt: .asciiz "Enter three numbers: "
    sum_msg: .asciiz "The Sum is: "
    avg_msg: .asciiz "The Average is: "
    newline: .asciiz "\n"  # 用于换行优化输出格式

.text   
    # 打印输入提示
    li $v0, 4          # 系统调用4:打印字符串
    la $a0, prompt
    syscall
    
    # 读取第一个整数并保存
    li $v0, 5          # 系统调用5:读取整数
    syscall
    move $s0, $v0      # 结果存入$s0
    
    # 读取第二个整数并保存
    li $v0, 5
    syscall
    move $s1, $v0
    
    # 读取第三个整数并保存
    li $v0, 5
    syscall
    move $s2, $v0
    
    # 计算三个数的总和
    add $s3, $s0, $s1
    add $s3, $s3, $s2
    
    # 打印总和提示字符串
    li $v0, 4
    la $a0, sum_msg
    syscall
    
    # 打印总和数值
    li $v0, 1          # 系统调用1:打印整数
    move $a0, $s3
    syscall
    
    # 换行
    li $v0, 4
    la $a0, newline
    syscall
    
    # 打印平均值提示字符串
    li $v0, 4
    la $a0, avg_msg
    syscall
    
    # 计算并打印平均值
    li $t1, 3
    div $s3, $t1       # 总和$s3除以3,商存储在$lo寄存器
    mflo $a0           # 将$lo中的商转移到$a0
    li $v0, 1
    syscall
    
    # 退出程序
    li $v0, 10
    syscall

关键修正说明

  • 调整系统调用顺序:先打印提示信息,再读取整数,确保用户能看到输入提示。
  • 补充总和数值的打印步骤,让输出逻辑完整。
  • 修正div指令的使用方式,通过mflo寄存器获取除法结果的商。
  • 修正拼写错误,并新增换行字符串优化输出的可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:03:27