MIPS-3个浮点数的除法
我的第一个MIPS任务之一。 我试了很多,也读了一些教程,但是我找不到失败的地方。 (3.0+3.0+3.0)‘div’3.0给出的结果为0.0 希望你能帮我找到我的错误MIPS-3个浮点数的除法,mips,floating-point-precision,Mips,Floating Point Precision,我的第一个MIPS任务之一。 我试了很多,也读了一些教程,但是我找不到失败的地方。 (3.0+3.0+3.0)‘div’3.0给出的结果为0.0 希望你能帮我找到我的错误 .text .globl main main: ##Enter first float: la $a0,prompt1 li $v0,4 syscall li
.text
.globl main
main:
##Enter first float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
move $s0,$v0
mtc1 $s0,$f0
##Enter second float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
move $s1,$v0
mtc1 $s1,$f1
##Enter third float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
move $s2,$v0
mtc1 $s2,$f2
##Calculate"((f0+f1+f2) div by 3.0)"
l.s $f3, fp1
add.s $f0, $f0, $f1
add.s $f0, $f0, $f2
div.s $f0, $f0, $f3
mfc1 $s0, $f0
la $a0,prompt2
li $v0,4
syscall
move $a0, $s0
li $v0,2
syscall
.data
fp1: .float 3.0
prompt1: .asciiz "Enter a float: "
prompt2: .asciiz "The result is: "
谢谢大家! 您使用的系统调用不正确 syscall 6(
read float
)的描述是:“结果$f0
包含浮点读取”
因此,在每次系统调用6之后,您可以执行mov.s$fn,$f0
(其中$fn
是$f1
,$f2
,等等)将已读取的浮点复制到其他浮点寄存器之一
syscall 2(
print float
)的描述是:“参数$f12
=要打印的浮点值”。因此,要打印分区的结果,您可以简单地将结果放置在
$f12
(即div.s$f12、$f0、$f3
)中,然后使用syscall 2。非常感谢!
我一直在努力,在你的提示下,我终于明白了。
以下是解决方案(如果任何人有类似问题)
.text
.globl main
main:
##Enter first float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
mov.s $f1, $f0
##Enter second float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
mov.s $f2, $f0
##Enter third float:
la $a0,prompt1
li $v0,4
syscall
li $v0,6
syscall
mov.s $f3, $f0
##Calculate"((f0+f1+f2) div by 3.0)"
l.s $f4, fp1
add.s $f1, $f1, $f2
add.s $f1, $f1, $f3
div.s $f12, $f1, $f4
la $a0,prompt2
li $v0,4
syscall
mfc1 $a0, $f12
la $v0,2
syscall
.data
fp1: .float 3.0
prompt1: .asciiz "Enter a float: "
prompt2: .asciiz "The result is: "