因此,我必须构建一个基本的4位乘法器,只使用加法和右移。我基本上知道Shift Add算法是如何工作的,但我不知道如何使它与右移而不是左移一起工作。从技术角度来看,假设我们有一个累加器,两个4位移位右寄存器和一个ALU,基本上是这样的,考虑到乘法器在ShiftReg2中的累加器和乘法器中,所以我们可以使用累加器(位7-4)和ShiftReg1 (位3-0)作为我们8位产品的输出。到目前为止Acc=abcd ShiftReg1=nothing的重要性和ShiftReg2=wxyz
知道如何开始4步算法的运行,考虑到你必须始终向右移动,并且只能将你的乘法器加到累加器中?
发布于 2015-05-07 13:41:40
假设您有一个指令(称为JPE),如果累加器是偶数(只是测试正确的大多数位是否为null),则可以使用这个沉重/丑陋的解决方案。
指示:
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>
https://stackoverflow.com/questions/30092807
复制相似问题