2017-05-21 5 views
0

Ich würde gerne wissen, warum ich eine Dezimalzahl als Antwort bekomme. Zum Beispiel, wenn ich 2 und 2 eingeben sollte die Antwort 4 sein, aber der Ausgang ist 0,04Mips Multiplikation von zwei Zahlen Funktion

.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 

Antwort

0

Sie haben ein syscall auf dem nächsten zu letzter Zeile, ohne Operationscode angegeben - es könnte im Grunde alles tun, abhängig davon, was zu diesem Zeitpunkt in $ v0 war. Mit Ihren Testeingängen von 2 und 2 hat $ v0 eine 2, was die Operation "float drucken" ist. Ihr Programm hat also einen willkürlichen, bedeutungslosen Gleitkommawert ausgegeben (der zufällig 0.0 war), gefolgt vom korrekten Ergebnis 4.

Verwandte Themen