Как сделать умножение, а затем сложение в симуляторе Мари

Я новый в симуляторе Мари. Я знаю, как добавить в симулятор, но, к сожалению, я не знаю, как умножить. например, как я могу поставить код для этого: 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
Другие вопросы по тегам