我有一个读取2个整数的程序,将它们除以得到输出为float。例如2/3 = 0.66666666。我写了以下程序。
.data
prompt1: .asciiz "Enter x: "
prompt2: .asciiz "Enter y: "
floatzero: .float 0.0
.text
main:
l.s $f4, floatzero
li $v0, 4
la $a0, prompt1
syscall
li $v0, 6
syscall
add.s $f12 , $f0 , $f4
li $v0, 4
la $a0, prompt2
syscall
li $v0, 6
syscall
add.s $f14, $f0, $f4
li $v0 , 2
div.s $f16, $f12, $f14
syscall
li $v0, 10
syscall
现在我有以下疑惑: 1.对于2/3它显示的输出是2.0000000。我应该更正得到0.66666666?
我可以使用任何方法将输入值从$ v0直接移动到某个$ f2。在这里我使用add.s(这也似乎很好用)。
为什么我不能简单地将输入作为整数,以整数格式保存(如$ a1)然后将其除以浮动格式保存答案?
P.S。这是我的作业,但我需要这样的基本概念来解决它。请帮忙。
提前谢谢。
答案 0 :(得分:2)
您将商存储在$f12
中,但系统调用2期望值以mov.s $f2, $f0
打印。
New User
您可以,但是您必须将整数值移动到浮点寄存器并在除法之前将它们转换为浮点值。 2到3之间的整数除法只会给出0作为结果。有关如何进行此转换的问题已经多次询问过,所以google例如“mips int to float”。