我是汇编语言的新手,我对乘法感到非常困惑。
它说我使用后mult $t0, $t1
结果存储在 Hi 和 Lo 中,我知道这些是 and 的特殊寄存器mult
,div
但是我如何访问它们呢?
假设我在mult $t0, $t1
where$t0
和$t1
are both 2. 我如何得到结果?(4)
例如:
.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。
您必须使用MFHI
和MFLO
将数据从通用寄存器移动HI
到LO
通用寄存器。