如何在MIPS汇编中获取除法余数?将t3与t8余数存入t1
MIPS汇编实现寄存器取余并存入指定寄存器
对于刚接触MIPS的新手,不用纠结复杂的特殊寄存器,用MIPS原生的除法指令就能轻松完成需求,步骤非常简单:
核心思路
MIPS的除法指令会自动把除法结果的商存入特殊寄存器$lo,余数存入特殊寄存器$hi,你只需要把$hi里的余数转移到t1即可,全程只用到你熟悉的t3、t8和两个专门存除法结果的简单特殊寄存器。
代码实现(有符号除法)
# 计算$t3 ÷ $t8的余数,将余数存入$t1 div $t3, $t8 # 执行有符号除法:被除数$t3,除数$t8,余数自动存入$hi mfhi $t1 # 把$hi中的余数复制到目标寄存器$t1
代码解释
div $t3, $t8:这条指令完成除法运算,无需手动配置其他寄存器,硬件会自动分配结果位置:余数进$hi,商进$lo。mfhi $t1:mfhi是"Move From HI"的缩写,功能就是把$hi里的内容转移到指定寄存器,这里就是把余数放到t1里。
无符号除法的情况
如果你的寄存器里存的是无符号数(非负数),可以用divu指令替代div,操作逻辑完全一致:
# 无符号除法取余 divu $t3, $t8 # 执行无符号除法,余数存入$hi mfhi $t1
注意事项
- 确保除数
$t8的值不为0,否则会触发CPU异常。 - 有符号除法中,余数的符号会和被除数
$t3保持一致,这是MIPS的默认规则。
内容的提问来源于stack exchange,提问作者Burcu Sultan Orhan
相关产品推荐
相关产品推荐

