Оптимизируйте это умножение на код повторного сложения, чтобы зациклить минимальное количество раз - PullRequest
0 голосов
/ 02 ноября 2019

Эта программа использует цикл, который умножает два положительных числа с помощью повторного сложения. Мне нужна помощь в оптимизации программы таким образом, чтобы она зацикливалась как можно меньше раз. Например, программа только зациклилась бы 3 раза, чтобы вычислить 3 * 6. То есть 6 + 6 + 6.

ORG 100
Load Y /load second value to be used as counter
Store Ctr /Store as a counter
Loop, Load Sum /load to the sum
Add X /Add X to sum
Store Sum /Store result in Sum
Load Ctr
Subt One / Decrement counter
Store Ctr /Store counter
SkipCond 400 /if AC=0 , discontinue looping
Jump Loop /if acnot 0 , continue looping
Endloop, Load Sum
Output /Print product
Halt /sum contains the product of x and y
Ctr, Dec 0
X, Dec 0 /initial value of x
Y, Dec 0 /initial value of Y
Sum, Dec 0 /initial value of Sum
One, Dec 1 /the constant value of 1
END

1 Ответ

1 голос
/ 02 ноября 2019

Учитывая пример 3 * 6, это умножение будет повторяться либо 6, либо 3 раза в зависимости от порядка параметров. Таким образом, если вы убедитесь, что входите в цикл с меньшим параметром в качестве счетчика цикла и большим как с добавлением, он будет повторяться меньше раз.

Например, проверьте, больше ли один, и при необходимости поменяйте местами, прежде чемпетля.

...