计组实验后记

利用Mars软件MIPS指令编写booth算法


从昨天晚上开始一直思考这个问题,今天上午写完了初始程序,下午调了半下午bug。

问题:


1.思路正确,显示结果错误
2.结果有的正确有的不正确

解答


1.上午有一个问题:如果将两个32位的数据按booth算法相乘的时候,需要用到移位。而两个32位数据分别存放于不同的寄存器中,所以不能直接进行移位操作。好友提示:先将表示高位的32寄存器“$t1”中的最后一位取出存于寄存器“$t0”,再将其左移31位(存入的是32为寄存器),然后将其同(已经右移的)表示低位的寄存器“$t1”进行或运算(OR  $t1,$t0),以达到顺畅右移的效果。然后我就照做了。所以就出错了。一步一步调试之后分析到,进行“$t1”右移操作的时候,应该用逻辑移位,而不是算术移位。
2.对于$2的移位应该用算术移位。

附:Booth乘法规则参考下图


booth

附:Booth乘法相关网站


posted @ 2016-04-10 19:55  屋中人  阅读(413)  评论(1编辑  收藏  举报
返回顶部