2017-05-21 199 views
0

我想知道为什么我得到一个十进制数作为答案。例如,如果我输入2和2答案应该是4,但输出为0.04两个数字的Mips乘法函数

.data 
msg1: .asciiz "Please enter a number i " 

msg2:.asciiz "Please enter a number j " 

.text 

.globl main 

main: 

la $a0,msg1 #print message 

li $v0,4 

syscall 

li $v0,5 

syscall 

move $a1,$v0 #i 

la $a0,msg2 #print message 

li $v0,5 

syscall 

move $a2,$v0 #j 

jal cal 

addi $a0,$a0,0 

li $v0,1 #print integer in reg a0 

syscall 

li $v0,10 

syscall 

cal: 

mult $a1,$a2 

mfhi $a0 

syscall 

jr $ra 

回答

0

你有下一个到最后一行,没有操作码指定一个syscall - 它可以做任何事情,取决于当时发生在$ v0中的情况。在您的测试输入为2和2时,$ v0中有一个2,即“印刷浮动”操作。所以,你的程序打印出一个任意的,无意义的float值(碰巧是0.0),然后是4的正确结果。