我的第一个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 $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: "
谢谢!
答案 0 :(得分:1)
您未正确使用系统调用。
系统调用6(read float
)的说明:" 结果 $f0
包含浮动阅读" 。
因此,在每个系统调用6之后,您可以执行mov.s $fn,$f0
(其中$fn
为$f1
,$f2
等)将已读取的浮动内容复制到其中一个其他浮点寄存器。
系统调用2(print float
)的说明如下:" 参数 $f12
=浮动打印&#34; 。<登记/>
因此,要打印除法的结果,您只需将结果放在$f12
(即div.s $f12, $f0, $f3
)中,然后使用系统调用2.
答案 1 :(得分:-1)
非常感谢! 我一直在努力,在你的提示的帮助下,我终于明白了。 这是解决方案(如果有人有类似的问题)
.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: "