4

我是汇编语言的新手,我对乘法感到非常困惑。

我在这里阅读快速教程(死链接,网络存档在这里

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

假设我在mult $t0, $t1where$t0$t1are both 2. 我如何得到结果?(4)

4

2 回答 2

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。

于 2021-03-26T19:45:13.603 回答
0

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

参考

于 2015-11-24T13:46:18.503 回答