“21天好习惯“ 第一期--20

2.4.2 定点乘法运算

1.原码一位乘法
(1)分布乘法过程
①寄存器分配与初始值
为了能用机器实现运算,需要设置相关寄存器,用来存放有关操作数和运算结果。
②符号位
A和B均设置双符号位。因为部分累积累加时最高有效数位有可能进位,这时可用第二符号位暂存该进位(并非溢出),将来右移时把它移回尾数部分。
③基本操作
在原码一位乘法中,每步只处理一位乘数,即位于C寄存器末位的乘数Cn。其余各位乘数将依次右移到该位,所以我们称之为判断位,它是决定每步操作的条件。
④操作步数
若乘数的尾数位数为n,则需要进行n次累加移位。机器实现时可用一个计数器来控制累加移位的操作循环次数。
2.补码一位乘法
(1)比较法的算法分析
(2)运算实例
①初始值和符号位
A寄存器用来存放部分积的累加和,初始值为0,采取双符号位。累加时可能产生的进位,暂存于第二符号位,第一符号位始终指示部分积的累加和的正负,以控制右移时补0或补1。补码乘法中有加或减,相应地,部分积可能有正有负,这就需要第一符号位保持正负标志。
B寄存器中存放补码表示的被乘数X,双符号位(与A相对应)。补码一位乘的基本操作有A+B和A-B,所以算式中先写出X(B)和-X(-B)的值。
C寄存器存放补码表示的乘数Y
②基本操作
用C寄存器最末两位(含增加的Cn+1)作为判断位。
③移位
在右移时,第二符号位移入尾数的最高数位,第一符号位移入第二符号位,第一符号位本身不变,而A寄存器末位移入C寄存器。
④步数与最后一步操作
注:最后一步不移位。
(3)逻辑实现
根据补码一位乘法构成乘法器,其设计方法与原码乘法器的设计相似。即先拟定各种操作所需的控制命令,再据此确定加法器与各寄存器的输入逻辑。其基本思路仍围绕数据传输这一线索。
3.原码两位乘法
在使用常规双操作数加法器的前提下,如何提高乘法速度呢?一种合乎逻辑的途径是每步同时处理两位乘数,根据两位乘数的组合本步应该做什么操作,从而在一步内求得与两位乘数相对应的部分积,称为两位乘法。其运算速度将比一位乘提高近1倍。
(1)算法分析
若两位乘数按高低顺序为YiYi+1,则4种可能组合所对应的操作如下:

YiYi+1操作
00原部分积右移2位
01原部分积+X,再右移2位
10原部分积+2X,再右移2位
11原部分积+3X,再右移2位

(2)运算过程说明
①初始值与符号位。根据原码乘法规则,先取绝对值相乘,用B寄存器存放被乘数X的绝对值,C中存放乘数Y的绝对值。可能的操作有+B、B、+2B,所以在算式中先写出B的机器负数和2B,机器实现时通过+B与末位+1实现B(将B变补相加),通过将B左斜一位的结果送入加法器,从而实现+2B操作。
②欠账触发器Cj。与补码乘中的附加位Cn+1不同,Cj时独立的触发器,不是乘数的一部分,运算前没有欠账,Cj初始值为0.以后每步根据欠不欠账来决定Cj的状态,因此Cj的值并不是移位获得的。
③操作。依据规则决定操作。“→2”表示右移2位。
④步数。乘数的尾数有n位,需要做n/2步操作。
(3)逻辑实现
按上述分析来设计原码两位乘法器,可拟出各种数据传送所需的控制命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值