Add-Shift Right算法 - 它是如何工作的?

时间:2015-05-07 05:43:05

标签: algorithm multiplication shift accumulator alu

所以我必须仅使用Add和Shift Right构建一个基本的4位乘法器。我基本上知道Shift添加算法是如何工作的,但我不知道如何使用右移而不是左移。从技术角度来看,假设我们有一个累加器,两个4位右移寄存器和一个ALU,它基本上看起来像这样,考虑到在开始时被乘数位于累加器和ShiftReg2中的乘数,所以我们可以使用累加器(位7-4)和ShiftReg1(位3-0)作为我们的8位产品的输出。 Acc = abcd ShiftReg1 =到目前为止没什么重要的,ShiftReg2 = wxyz

知道如何开始让4步算法开始考虑你必须总是向右移动并且只能将你的被乘数加到你的累加器中吗?

1 个答案:

答案 0 :(得分:0)

假设你有一条指令(称为JPE),如果累加器是偶数则跳转(只测试最右边的位是否为空),你可以得到这个沉重/丑陋的解决方案。

说明:

  • JPE <address>:如果累加器是偶数,则跳转到该地址。
  • ADD <r1>, <r2>:将<r1>的值添加到<r2>并将结果存储到<r2>
  • SHR:将累加器向右移1位。

初始化:

Acc : first number.
Sr1 : 0, but it will hold the result at the end of the algorithm's execution.
Sr2 : second number to multiply with the first.

Awfull算法:

0001   JPE 0003
0002   ADD Sr2, Sr1
0003   SHR
0004   JPE 0007
0005   ADD Sr2, Sr1
0006   ADD Sr2, Sr1
0007   SHR
0008   JPE 0013
0009   ADD Sr2, Sr1
0010   ADD Sr2, Sr1
0011   ADD Sr2, Sr1
0012   ADD Sr2, Sr1
0013   SHR
0014   JPE 0023
0015   ADD Sr2, Sr1
0016   ADD Sr2, Sr1
0017   ADD Sr2, Sr1
0018   ADD Sr2, Sr1
0019   ADD Sr2, Sr1
0020   ADD Sr2, Sr1
0021   ADD Sr2, Sr1
0022   ADD Sr2, Sr1
0023   SHR
0024   <STOP>