我们给出了一个项目,我们必须在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 :(得分:1)
您正在将arr
的地址加载到$s0
,然后使用$s0
作为arr
(arr($s0)
)的偏移量。如果$s0
包含您想要的数据地址,请使用($s0)
。