0

我为我的一项任务编写此代码,我需要一个大小为 128 的数组,我通过

drops: .space 128

这样我就可以将特定点加载到滴中并将数字 0-8 存储到它......

例如....假设随机数是 32,并且我在循环的第一次迭代中,如果我在数组的第 2 次迭代中,它将在数组的第 32 个位置存储 0...它将存储 1在随机数中,例如 92..spot

这是我的代码:

我首先在我的数组 -1 中制作了所有内容,以便我可以测试其中是否有东西......

storeArray: 

 la $t6, drops
 la $t1, 0  #counter


loopStoreRandom:

    move $a0, $s5   # send x 
    jal getDrop
    move $t2, $v0 #t2 has a random number 

    add $t6, $t6, $t2  #random + the whole   ---wrong

    lb $t3, ($t6)       
    bne $t3, -1, loopStoreRandom


    addi $t1, $t1, 1
    beq $t1, 128, exit
    j loopStoreRandom

所以如你所见,我希望有一些我可以做到的事情,sb $t1, $t2($t6)但我做不到

4

2 回答 2

0

您没有在每个循环中恢复 $t6 ,因此指针在第一个循环后变为关闭。

移动

la $t6, drops

循环内。

于 2011-03-23T05:50:24.317 回答
0
jal getDrop
move $t2, $v0 #t2 has a random number 

假设从 getDrop 返回 v0,移动指令将在执行 getDrop 之前执行,因为它将作为 jal 延迟槽的一部分执行。所以 T2 不会包含 getDrop 的返回值。

应该:

jal getDrop
nop

move $t2, $v0
于 2015-09-11T07:47:29.697 回答