从mult in mips获得结果

时间:2014-03-23 22:31:42

标签: mips mips32 spim

我是汇编语言的新手,我对乘法很困惑。

我在这里阅读快速教程:http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm

它说我使用mult $t0, $t1后结果存储在Hi和Lo中,我知道这些是multdiv的特殊寄存器,但我该如何访问它们?

让我说我mult $t0, $t1 $t0$t1都是2.我如何得到结果? (4)

2 个答案:

答案 0 :(得分:0)

您必须使用MFHIMFLO将数据从HILO移至通用寄存器。

Reference

答案 1 :(得分:0)

例如:

      .globl main
       main:
            li $t0,3
            li $t1,2
            mult $t0,$t1

mult 条件乘以 2 个有符号的 32 位并形成 64 位结果。要访问它,首先使用命令将值存储在寄存器中。这会将 HI、LO 值存储到通用寄存器。

             mfhi $t2
             mflo $t3

然后使用打印语句打印这些值:

             move $a0,$t2
             li $v0,1
             syscall
 
             move $a0,$t3
             li $v0,1
             syscall  

在控制台上获取输出。

要获得乘法的结果,您可以使用另一个命令,即

            mul $t2,$t0,$t1 

将寄存器 1 中的值和寄存器 0 中的值的乘积存储在寄存器 2 中的位置。然而,这会破坏 HI 和 LO。