mips で 点数を求める配列に格納
MIPS プログラムを用いて,試験の成績データを解析することを考える.受験者数を X とし,配列 A[0] からA[X-1] に各受験者の点数が整数値(0~ 100)で格納されているとする.このとき,Hist[0] から Hist[9] に,それぞれ,0 ∼ 10 点,11 ∼ 20 点,21 ∼ 30 点, . . . , 91 ∼ 100 点 をとった学生の人数が格納されるようにしたい.配列 A,Hist はともに 32 ビット整数型とし,ベースアドレスは,それぞれ,レジスタ$s0,$s2 に格納されているとする.また,受験者数 X はレジスタ$s1 に格納されているとする.
1. Main: addi $t1, $zero, 10
2. Loop: lw $t0, 0($s0)
3. addi $t0, $t0, -1 ##この部分、なぜ点数を-1 でしょうか?
4. jal Div
5. ??? ##ちょっとわからない
6. add $t3, $s2, $t2
7. lw $t0, 0($t3)
8. addi $t0,$t0,1 ##自分が入れたが、適切かどうか自信がない
9. sw $t0,0($t3)
10. addi $s0, $s0, 4
11. addi $s1, $s1, -1
12. bne $s1, $zero, Loop
13. End: end
サブルーチン ##配列の添字を求めるためと思います
S1 Div: add $t2, $zero, $zero
S2. LoopD: sle $t3, $t1, $t0
S3. beq $t3, $zero, Ret
S4. addi $t2, $t2, 1
S5. sub $t0, $t0, $t1
S6. j LoopD
S7. Ret: jr $ra
3の部分はなぜ-1でしょうか、5はなんをいれるか? 8、9は自信がないが、それは配列に人数を増やすためと思います