

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 に格納されているとする.  
[![画像の説明をここに入力](https://i.stack.imgur.com/eIXuz.png)](https://i.stack.imgur.com/eIXuz.png)

[code]

    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
    
[/code]

[code]

    　サブルーチン　##配列の添字を求めるためと思います
    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
    
[/code]

3の部分はなぜ-1でしょうか、５はなんをいれるか？ 8､9は自信がないが、それは配列に人数を増やすためと思います


CC BY-SA 4.0
2019-07-21T13:12:06.067
56786
2019-07-21T16:43:54.490
2019-07-21T16:43:54.490
35114
35114
question
c assembly mips
mips で 点数を求める配列に格納