2015-11-15 39 views
0

我們給出了一個項目,我們必須在MIPS中找到輸入浮點數的最小值,最大值和中位數。我目前正在嘗試按升序對數字進行排序,但沒有多少運氣。我被卡住的地址超出範圍的錯誤。這是我的代碼,任何人都可以幫忙嗎?在MIPS中對浮點數進行排序

.data 
arr: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0 
end: .float 0.0 
low: .float 0 

pro: .asciiz "This Program will show the max, min,\nand median of the entered values.\nType 0.0 to end the program." 
pro1: .asciiz "\nEnter a floating point value.\n"   

.text 
li $v0, 4 
la $a0, pro 
syscall 

index: 
li $s0, 0 
li $t0, 0 
lwc1 $f11, end 

main: 
li $v0, 4 
la $a0, pro1 
syscall 
li $v0, 6 
syscall 
la  $s0, arr 
sw  $v0, arr 
add $s0, $s0, 4 
c.eq.s $f0, $f11 

loop1: 
swc1 $f0, arr($s0) 
addi $s0, $s0, 4 
swc1 $f1, arr($s0) 
c.lt.s $f0, $f1 
bc1t min 
j  main 

min: 
swc1 $f0, low 
j main 

li $v0, 2 
syscall 

exit: 
lwc1 $f12, low 
li $v0, 2 
syscall 
li $v0, 10 
syscall 
+0

這個錯誤發生在哪裏,並且具體說明了什麼? –

+0

第32行:0x00400058處的運行時異常:地址超出範圍0x20020004 – schaustm

+0

而哪一行是32行? –

回答

1

您正在加載的arr地址爲$s0,但是如果使用$s0作爲從arrarr($s0))所抵消。如果$s0有你想要的數據的地址,只需使用($s0)