【问题标题】:Getting result from mult in mips从 mips 中获取结果
【发布时间】:2014-05-01 03:16:17
【问题描述】:

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

我正在阅读快速教程here(死链接,web archive here

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

假设我做mult $t0, $t1 其中$t0$t1 都是2。我如何得到结果? (4)

【问题讨论】:

  • 有访问这些寄存器的特殊指令。见here
  • 我看了那个帖子,还是有点迷茫,我想找个乘法的例子但是找不到,你能告诉我如何访问上面问题的结果吗?
  • 使用 mfhi $t0 将 HI 移动到 t0,使用 mflo $t1 将 LO 移动到 t1。请注意,您可以使用这些说明将 HI 和 LO 移动到任何 GPRS。您还可以使用mthimtlo 将值移动到HI 和LO。有关详细信息,请查看您的 MIPS 说明参考手册。

标签: mips mips32 spim


【解决方案1】:

例如:

      .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。

【讨论】:

    【解决方案2】:

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

    Reference

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2020-01-30
      • 2014-11-03
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多