2017-05-21 201 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的正確結果。