Алгоритм Add-Shift Right — как он работает?

Поэтому мне нужно построить базовый 4-битный мультипликатор, используя только «Добавить» и «Сдвинуть вправо». Я в основном знаю, как работает алгоритм Shift Add, но я не знаю, как заставить его работать с правым сдвигом вместо левого. С технической точки зрения, скажем, у нас есть один аккумулятор, два 4-битных правых регистра сдвига и одно АЛУ, в основном это будет выглядеть так, учитывая, что в начале множимое находится в аккумуляторе, а множитель в ShiftReg2, так что мы можно использовать аккумулятор (биты 7-4) и ShiftReg1 (биты 3-0) в качестве выходных данных для нашего 8-битного продукта. Acc=abcd ShiftReg1=пока ничего важного и ShiftReg2=wxyz

Знаете, как начать работу с четырехэтапным алгоритмом, учитывая, что вам придется всегда сдвигаться вправо и вы можете только добавить свое множимое к своему аккумулятору?


person techNoob12    schedule 07.05.2015    source источник
comment
Как бы вы выполнили двоичное умножение с ручкой и бумагой? Попробуйте 1000 x 1001. Кроме того, SO — это не сайт для решения домашних задач — если у вас возникли проблемы с кодом, покажите, что вы пробовали, и опишите, как это не удалось.   -  person Michael Foukarakis    schedule 07.05.2015
comment
Не могли бы вы дать нам весь список доступных операций. Я предполагаю, что у вас есть ShiftRight для каждого из 3 регистров, Add (ShiftReg1, Acc), Add (ShiftReg2, Acc), 3 инструкции перемещения, но как насчет побитового тестирования, операторов AND/OR/XOR/NOT?   -  person Tolokoban    schedule 07.05.2015


Ответы (1)


Предполагая, что у вас есть инструкция (называемая 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.

Ужасный алгоритм:

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>
person Tolokoban    schedule 07.05.2015