当我运行程序并输入20度时,输出在MARS中为8.8E-44,在QtSpim中为0.000000。它应该是62.8
我在这里使用了错误的说明吗?.data
pi: .float 3.14
c: .word 180
initMSG: .asciiz "\nEnter an angle in degrees: "
.text
.globl main
main:
mul $t5, $t2, $t6
add $t5, $t5, $sp
addi $t5, $t5, 4
lw $t9, 0($t5)
mul $t4, $t1, $t6
add $t4, $t4, $a0
sw $t9, 0($t4)
addi $t2, $t2, 1
addi $t1, $t1, 1
j forLoop3
Exit:
li $v0, 10 #load the system exit command
syscall #stop the program
答案 0 :(得分:1)
问题是pi
是一个浮点数,但是你从用户那里获得的值是一个普通的整数。在将用户的值乘以pi
之前,您需要将用户的值转换为浮点值。
幸运的是,您不必手动转换它,因为有一个用于读取浮点数而不是整数的系统调用。将读取系统调用从5更改为6(6表示读取浮点数),并删除后续的两行(系统调用6将直接将浮点读入$f0
)。在这样做并使用20度再次运行之后,我得到62.800003作为输出(将会有少量错误,因为3.14无法使用二进制浮点数精确表示)。