MIPS汇编语言学习笔记11:Multiplying Integers (mult方法)

本文已收录于 MIPS汇编语言学习笔记 系列,共计 27 篇,本篇是第 9 篇

本文已收录到:MIPS汇编语言学习笔记 专题

任务:整数相乘,并输出打印。

 

代码:

.data
	intA:	.word 5
	intB:	.word 2
.text
	li $v0, 1
	lw $a1, intA
	lw $a2, intB
	mult $a1, $a2	# 相乘放入固定的HI和LO寄存器
	mflo $a0	# 专门用于取LO寄存器中的值,再存入a0寄存器
	syscall 

 

 

本节我参考的之前的笔记,可以顺利写出代码。

MIPS汇编语言学习笔记03:print HelloWorld

 

HI和LO寄存器作用:

乘法:HI存放结果的高字节,LO存放结果的低字节。

除法:HI存放余数,LO存放除法结果。

Ps:HI和LO作为特殊寄存器,都是临时存储的,如果需要打印等操作,还需要使用 mfhi 或 mflo 指令将其转存。

 

2021年3月18日更新:上述方法其实是mult方法,即第11讲的内容。我把标题改为11了。

作者: 高志远

高志远,23岁,男生,毕业于上海杉达学院电子商务系。

《MIPS汇编语言学习笔记11:Multiplying Integers (mult方法)》有2条评论

    1. 在32位MIPS体系CPU中支持最多32位相乘,获得的乘法结果最多为64位。
      eg:最大的两位数99相乘,99 * 99 = 9801,即最多4位数。MIPS中使用 hi lo寄存器共计保存64位结果。
      因此,如果被乘数和乘数都小于32位,不会存在乘法溢出问题。当然,如果被乘数、乘数本身大于了32位,他们不是由CPU本身处理,而是在前一阶段比如编译器中进行预先处理的。

发表评论

邮箱地址不会被公开。