如下除特殊说明外均为32位数的运算spa
A + B = Cblog
无符号整数加法和有符号整数加法均采用如下方案进行操做io
用到的寄存器与初始化内容:基础
32位加数寄存器--------初始化为加数循环
32位被加数寄存器 ----初始化为被加数im
32位和寄存器 ----------所有置零img
操做方案以下:解决方案
将加数寄存器和被加数寄存器按位对齐,每组对应位分别进行如下操做:co
放在一块儿就是:(因32位画出来过于繁杂,这里的图示采用了8位)浮点数
在此基础上还要设置溢出判断,来表示此次运算是否发生溢出。
被减数 - 减数 = 差
这里承用上面的加法运算单元。
用A表示被减数,B表示减数。首先将B转换为其相反数即(-B)。而后进行A+(-B)的加法运算。同时也要设置一段逻辑电路判断减法运算是否发生溢出。
被乘数 X 乘数 = 积
最先的解决方案:
所用到的存储器与初始化存储内容:
32位乘数寄存器--------初始化为乘法运算的乘数
64位被乘数寄存器 ----低32位填充为乘法运算的被乘数,高32位置零
64位积寄存器 -----------所有置零
用到的功能分别为:循环,无符号加法,移位。
执行结构图以下:
所用到的存储器与初始化存储内容:
32位被乘数寄存器(简称A)------初始化为乘法运算的被乘数
64位积寄存器 (简称B)-----------高32位置零,用来存放乘积,低32位初始化为乘数
对于每次迭代:
先把乘数和被乘数的符号位记下来,而后把乘数和被乘数转换成正数进行无符号乘法运算,运算结果再加上符号。
被除数 ÷ 除数 = 商 ••••••余数
所用到的存储器与初始化存储内容:
32位商寄存器-----------所有置零
32位除数寄存器 -------填充32位除数
65位余数寄存器 -------左半部分置零,右半部分填充32位被除数
处理结构图:
跟上文有符号整数乘法同样,先保存除数、被除数符号,若二者符号异或为1,则商为负。