Assembly MIPS用户输入的浮点值
我正在尝试编写一个MIPS程序,它接受用户输入的浮点值(以华氏度为单位),并将其转换为摄氏度。但是,我很难找到用户输入的float 我的浮点数前的代码如下:Assembly MIPS用户输入的浮点值,assembly,mips,qtspim,Assembly,Mips,Qtspim,我正在尝试编写一个MIPS程序,它接受用户输入的浮点值(以华氏度为单位),并将其转换为摄氏度。但是,我很难找到用户输入的float 我的浮点数前的代码如下: .data getDegreesF: .asciiz "Please enter the degrees in Fahrenheit: " degreesF: .asciiz " degrees Fahrenheit is " degreesC: .asciiz " degrees Celsius." .text .globl ma
.data
getDegreesF: .asciiz "Please enter the degrees in Fahrenheit: "
degreesF: .asciiz " degrees Fahrenheit is "
degreesC: .asciiz " degrees Celsius."
.text
.globl main
addi $sp, $sp, -8
sw $s0, 0($sp)
sw $s1, 84($sp)
main:
la $a0, getDegreesF #load getDegreeF sting
li $v0, 4 #syscall to print string
syscall
li $v0, 6 #syscall to read float
syscall
li $v0, 10 #syscall to exit program
syscall
我的理解是,一旦读取浮点值,它就会存储在$f0中。我想把它放在$s0中,但我一直得到一个语法错误。我做错了什么
谢谢。
$f0
是浮点寄存器,$s0
是整数寄存器。通常在它们之间移动是没有意义的(但这是可能的)。您应该在$s0
中说明实际问题,以及为什么需要它。另请参见。对不起,目标是获取输入的值,从中减去32,将结果乘以5,将结果除以9,然后将其放入寄存器中进行打印。我的输出应该是“uuu华氏度为uuuu摄氏度”。因此,我想保存用户输入的值以供打印,并保存转换后的值以供打印。我确实尝试移动$f1,$f0,但也出现语法错误。您需要根据需要使用协处理器指令mov.s
或mov.d
。仔细阅读指令集。另外请注意,$f1
不可用,当用于双精度时,它是$f0
的后半部分。谢谢。这解决了我的问题。