我是汇编语言的新手,我对乘法很困惑。
我在这里阅读快速教程:http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm
它说我使用mult $t0, $t1
后结果存储在Hi和Lo中,我知道这些是mult
和div
的特殊寄存器,但我该如何访问它们?
让我说我mult $t0, $t1
$t0
和$t1
都是2.我如何得到结果? (4)
答案 0 :(得分:0)
您必须使用MFHI
和MFLO
将数据从HI
和LO
移至通用寄存器。
答案 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。