用于读取2个整数并将它们除以得到浮点输出的MIPS代码?

时间:2017-02-05 08:05:37

标签: assembly mips

我有一个读取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?

  1. 我可以使用任何方法将输入值从$ v0直接移动到某个$ f2。在这里我使用add.s(这也似乎很好用)。

  2. 为什么我不能简单地将输入作为整数,以整数格式保存(如$ a1)然后将其除以浮动格式保存答案?

  3. P.S。这是我的作业,但我需要这样的基本概念来解决它。请帮忙。

    提前谢谢。

1 个答案:

答案 0 :(得分:2)

  1. 您将商存储在$f12中,但系统调用2期望值以mov.s $f2, $f0打印。

  2. New User

  3. 您可以,但是您必须将整数值移动到浮点寄存器并在除法之前将它们转换为浮点值。 2到3之间的整数除法只会给出0作为结果。有关如何进行此转换的问题已经多次询问过,所以google例如“mips int to float”