Assembly 用于读取2个整数并将其除以以获得浮点输出的MIPS代码?

Assembly 用于读取2个整数并将其除以以获得浮点输出的MIPS代码?,assembly,mips,Assembly,Mips,我有一个程序,读取2个整数,除以它们得到浮点输出。例2/3=0.6666。我写了以下节目 .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

我有一个程序,读取2个整数,除以它们得到浮点输出。例2/3=0.6666。我写了以下节目

.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.6666

  • 有没有什么方法可以直接将输入值从$v0移动到$f2。这里我使用的是add.s(它似乎也能很好地工作)

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

  • 这是我的家庭作业,但我需要像这样的基本概念来解决它。请帮忙

    先谢谢你

  • 您正在将商存储在
    $f16
    中,但系统调用2希望将值打印在
    $f12

  • mov.s$f2,$f0

  • 可以,但必须将整数值移动到浮点寄存器,并在除法之前将其转换为浮点值。2和3之间的整数除法的结果是0。关于如何进行这种转换的问题已经被问过好几次了,所以谷歌的例子是“mips int to float”

  • 您正在将商存储在
    $f16
    中,但系统调用2希望将值打印在
    $f12

  • mov.s$f2,$f0

  • 可以,但必须将整数值移动到浮点寄存器,并在除法之前将其转换为浮点值。2和3之间的整数除法的结果是0。关于如何进行这种转换的问题已经被问过好几次了,所以谷歌的例子是“mips int to float”