嗨我正在用MIPS编写一个小程序,它在9之间除以2并显示结果。这是代码
li $t1, 2
li $t2, 9
li $v0, 2
div $t0,$t2,$t1
move $a0,$t0
syscall
(这不是完整的代码,只是处理部门的部分)
所以,2/9是0.2222222222222222
但是当我运行它时我只得到0.0
我如何显示真实结果(0.2222222222222222)?
我曾经说过我使用整数而不是浮点数,我必须使用浮点指令来获得十进制结果。我应该查看div.x指令,但div.x不是一个可识别的运算符。
所以,我几乎是空白。我不明白该怎么做。
有人可以发布代码来显示浮点结果吗?
提前致谢。
答案 0 :(得分:6)
好的,经过长时间的尝试和错误,正确的方法来打印真实的结果是:
使用伪li.s设置2个浮点寄存器(感谢Paul R指向正确的方向)
li.s $f1, 2.0
li.s $f2, 9.0
显然,准备打印浮标
li $v0, 2
在师而不是div $t0,$t2,$t1
我应该使用
div.s $f12,$f1,$f2
而不是move $a0,$t0
我应该
syscall
没有必要移动,div.s立即打印出结果,因此没有必要将$ f12的内容移动到$ a0来打印其内容。
真正的耻辱是火星不会伪造伪李。我不得不在PCSPIM上尝试这个...
最终代码是
.globl main
.text
main:
li.s $f1, 2.0
li.s $f2, 9.0
li $v0, 2
div.s $f12,$f1,$f2
syscall
li $v0, 10
syscall
当你运行它时,你会得到0.22222222,这是将2除以9的真实结果。
答案 1 :(得分:4)
这是整数除法指令,因此2 / 9 = 0
是正确的结果。尝试例如27 / 9
你应该得到3的结果。
答案 2 :(得分:0)
你正在进行整数除法。使用浮点指令以十进制格式获取结果。查看div.x指令。
答案 3 :(得分:0)
在不知道完整目标的情况下,使用方便的整数快捷方式也许就足够了:将20亿除以9并用人工插入的小数点显示。在C
中,这就像
printf ("0.%d", 2000000000 / 9);