Mips乘以两个数字函数

时间:2017-05-21 17:20:01

标签: assembly mips

我想知道为什么我得到一个十进制数作为答案。例如,如果我输入2和2,则答案应为4,但输出为0.04

.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

1 个答案:

答案 0 :(得分:0)

在倒数第二行上有一个Animal,没有指定操作代码 - 它基本上可以做任何事情,具体取决于那时在$ v0中发生的事情。测试输入为2和2时,$ v0中有2个,这是“打印浮动”操作。所以,你的程序打印了一个任意的,毫无意义的浮点值(恰好是syscall),然后是0.0的正确结果。