0

私の割り当ての1つにこのコードを書いているのですが、サイズ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 

v0 が getDrop から返されると仮定すると、move 命令は jal の遅延スロットの一部として実行されるため、getDrop が実行される前に実行されます。したがって、T2 には getDrop の戻り値が含まれません。

次のようにする必要があります。

jal getDrop
nop

move $t2, $v0
于 2015-09-11T07:47:29.697 に答える