MIPS:整数乘法和除法

时间:2013-04-17 02:20:53

标签: mips

所以我在MIPS中构建一个计算器程序,我正在尝试编写乘法和除法函数。

目前我在循环中读取整数:

li $v0, 5
syscall

然后最终调用我的函数multidivi,具体取决于用户想要执行的操作。

假设我在$a0$a1中有整数,那么将$a0乘以$a1和/或除$a0的干净方法是什么?由$a1?我一直在网上寻找,但我找不到干净简单的方法来做到这一点,因为我必须在$v0

中发回最终答案

1 个答案:

答案 0 :(得分:19)

要相乘,请使用mult进行有符号乘法,将multu用于无符号乘法。请注意,两个32位数相乘的结果产生一个64位数。如果你希望结果返回$ v0,这意味着你假设结果将适合32位。

32个最高有效位将保存在HI特殊寄存器中(可由mfhi指令访问),32个最低有效位将保存在LO特殊寄存器中(可通过{访问) {1}}指令):

E.g:

mflo

要划分,请使用 li $a0, 5 li $a1, 3 mult $a0, $a1 mfhi $a2 # 32 most significant bits of multiplication to $a2 mflo $v0 # 32 least significant bits of multiplication to $v0 表示签名除法,div表示未签名除法。在这种情况下,divu特殊注册将保留提醒,HI特殊注册将保留该分区的商。

E.g:

LO