Как сделать умножение, а затем сложение в симуляторе Мари
Я новый в симуляторе Мари. Я знаю, как добавить в симулятор, но, к сожалению, я не знаю, как умножить. например, как я могу поставить код для этого: S=x*Y+z Заранее спасибо
1 ответ
Вы можете реализовать умножение с помощью повторного сложения.
Вот основной алгоритм.
For positive integers use the algorithm:
Result = Result - Multiplier
Multiplicand = Multiplicand - 1
For negative integers use the algorithm:
Result = Result + Multiplier
Multiplicand = Multiplicand + 1
В псевдокоде:
while Multiplicand != 0
if Multiplicand > 0
Result = Result - Multiplier
Multiplicand = Multiplicand - 1
else
Result = Result + Multiplier
Multiplicand = Multiplicand + 1
Для этого требуется две переменные для хранения Multiplier и Multiplicand. Кроме того, вы можете преобразовать это в рутину общего назначения с помощью JNS
(Инструкция по переходу и хранению) и JUMPI
(Прыжок Косвенный).
JNS Multiply
/ Somewhere else
/ Define Multiply as a variable
/ JNS will store the current HEX address
/ in Multiply and start executing the next
/ line
Multiply, DEC 0
/ *** Multiply Body *** /
/ Lastly use JUMPI to Jump Indirectly
/ back to where Multiply was
/ executed from
JUMPI Multiply