所以我在MIPS中构建一个计算器程序,我正在尝试编写乘法和除法函数.
目前我在循环中读取整数,如下所示:
li $v0, 5
syscall
Run Code Online (Sandbox Code Playgroud)
然后最终调用我的函数multi并divi根据用户想要执行的操作.
因此,假如我在整数$a0和$a1,这将是一个干净的方式繁殖$a0的$a1和/或分裂$a0的$a1?我一直在网上寻找,但我找不到干净简单的方法,因为我必须将结果回复$v0
gus*_*bro 20
要相乘,请使用mult有符号乘法和multu无符号乘法.请注意,两个32位数相乘的结果产生一个64位数.如果您希望结果返回$ v0,这意味着您假设结果将适合32位.
32个最高有效位将保存在HI特殊寄存器中(可通过mfhi指令访问),32个最低有效位将保存在LO特殊寄存器中(可通过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
Run Code Online (Sandbox Code Playgroud)
划分,div用于签名除法和divu无符号除法.在这种情况下,HI特殊注册表将保留提醒,而LO特殊注册表将保留该部门的商.
例如:
div $a0, $a1
mfhi $a2 # reminder to $a2
mflo $v0 # quotient to $v0
Run Code Online (Sandbox Code Playgroud)