2016-04-24 33 views
3

私はmipsが初めてで、8要素配列の最大値と最小値を出力したいと思います。私は似たような質問を見ましたが、関数readArrayを呼び出すことによって行われました。私はそれを使わずにやりたいのです。ここに私がこれまで持っているものがあります。私はちょうど私が今持っているものが正しいのか、ループを終了するのかを知りたいだけです。正しい値を印刷するために何を書くのですか?Mipsの配列の最大値と最小値を出力するには

.data 
    X: .word 1, 2, 3, 4, 5, 6, 7, 8 

globl main 
.text 

main: 
    la $t0, X 
    lw $s0, 0($t0) #Sets Max to first value in array 
    move $s1, $s0 #Sets Min to first value in array 
    addi $t1, $0, 0 #Sets the counter to 0 
    li $t1, 0  #Index for the array 

loop: 
    bge $t0, 8 EndLoop 
    bgt X($t1), $s0, SetMax 
    blt X($t1), $s1, SetMin 
    addi $t1, $t1, 4 #Increases the index for the array 
    addi $t0, $t0, 1 #Increments the counter 
SetMax: 
    move $s0, X($t1) 
    j loop 
SetMin: 
    move $s0, X($t1) 
    j loop 
EndLoop: 
    li $v0, 1 
    addi $s0, $s0, 0 
    addi $si, $s1, 0 
    syscall 

私は何か間違っていますか?ここに元の問題があります: 最小値と最大値を見つけるために配列X [8]ワードを検索するMIPSコードを書いてください。レジスタ$ s0に最大値を格納し、$ s1に最小値を格納します。画面の最小値と最大値に印刷します。 助けてくれてありがとう!

答えて

0

整数を出力するには、$v0を1に、$a0を印刷する整数と等しくする必要があります。値を保存したレジスタを指します。

li $v0 1 la $a0 ($s0) syscall

$ s1のための同じプロセス。プログラムを終了するには

li $v0 10 syscall

あなたはそれがより見えるようにしたいので、それらの間にスペースまたはタブを印刷することができます。 Linkいくつかのシステムコールで

+0

ループを終了する方法をお手伝いしてくれてありがとう。今は構文や何かに間違いがあります。私はちょうどあなたが何を考えているのか、コードに間違っているかを知りたいと思うだけです。 – JX30

+0

うまくいっているようですが、結果が得られたら、最後に2つの 'addi'を削除するだけです。あなたはそれらを必要としません。 – Segmentation

関連する問題