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

MIPS汇编生成128个随机数存数组求平均不显示结果问题

问题分析

  • 循环计数器初始化位置错误:addi $t0, $zero, 0 放在了loop标签内部,每次进入循环都会将计数器重置为0,程序陷入死循环,永远无法执行到后续的平均值计算和输出逻辑。
  • 平均值计算代码不可达:srl $t8, $t9, 7 写在j loop指令之后、exit标签之前,程序永远不会执行到这行代码,平均值根本没有计算。
  • 输出寄存器使用错误:打印整数时执行的move $a0, $a1,取的是之前设置的随机数上限值,而正确的平均值存储在t8寄存器中,就算执行到也无法输出正确结果。
  • 累加寄存器未初始化:用来存储累加和的t9寄存器没有初始清零,初始值为随机垃圾数据,累加得到的总和本身就是错误的。
  • 随机数上限设置错误:MIPS syscall 42生成随机数的范围是[0, $a1),即不包含上限值,你设置$a1=16只会生成0-15的数,要生成≤128的随机数需要将$a1设为129。

修正后的完整代码

# seed the generator
# 1 - load the generator ID
# 2 - seed the generator
# Generate 128 random numbers (loop)
# 1 - load the generator ID 
# 2 - bound the random number generator to less than or equal to 128
# 3 - generate a random number 
# 4 - store number in array
# 4 - go to step 2 until 128 numbers have been generated
# Compute the Average
# 1 - add all the numbers in the array (loop)
# 2 - compute the average (use a right shift)
# 3 - Display the average result message
# 4 - Display the average

    .data 
array: .space 512
genID: .word 1
seed:  .word 1235
prompt: .asciiz "the average number generated from the number generator is: "
    .text

.globl main

main:
    lw $a0, genID      # loads genID
    la $t0, seed       # loads seed
    
    lw $a1, 0($t0)
    li $v0, 40         # seed the generator
    syscall

    # 初始化计数器、累加和,放在循环外面
    addi $t0, $zero, 0   
    add $t9, $zero, $zero 
    la $t8, genID        
  
loop:
    lw $a0, 0($t8)         
    li $a1, 129        # 生成0-128的随机数,上限不包含所以设129
    li $v0, 42         # gen a random number
    syscall
    
    sw $a0, array($t0)    # store number in array 
    addu $t9, $t9, $a0    # 累加
    
    addi $t0, $t0, 4      # 增量索引
    bge $t0, 512, compute_avg   # 凑够128个就去算平均值
    j loop               

compute_avg:
    srl $t8, $t9, 7      # 128=2^7,右移7位相当于除以128

exit:
    li $v0, 4
    la $a0, prompt
    syscall
    
    li $v0, 1
    move $a0, $t8        # 输出计算好的平均值
    syscall
    
    li $v0,10
    syscall

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:54:01