Кубирование чисел с повторным добавлением в MARIE
Я пытаюсь написать подпрограмму для MARIE, которая будет кубировать число с помощью повторного сложения. Я знаю, что мне нужно добавить число, равное его количеству, три раза (поэтому, если его 4, мне нужно добавить 4 к себе 4 раза, 3 раза). У меня нет хорошей идеи о том, как сделать цикл еще 3 раза. Также не уверен, как использовать JnS.
Из примеров, которые я видел, они используют JnS для хранения значений. Вот что у меня
/Subroutine for finding cube of number
/
Load Num /Load the first number
Store Count /Store this number to use for looping repeated addition
Loop, Load Sum /Load the sum for first number into AC
AddI Num /Add the value in AC of first number
Store Sum /Store the sum
Load Count /Load Count again
Subt One /Subtract one from our counter
Store Count /Store this new number for our counter
Skipcond 800 /If Count > 0, skip next instruction
Jump Loop /Continue loop if Count is greater than 0
1 ответ
Храните растущее дополнение в переменной Sum. Используйте значения по адресу переменных с add, а не AddI. Его нужно добавить столько же раз, сколько он сам, чтобы найти квадрат, включая исходное число, следовательно, минус единицу от числа.
Тогда значение в квадрате может быть сохранено во второй переменной Square
, который должен быть суммирован количество раз оригинального числа.
Например.
23 = 22 * 2 = (2 + 2) + (2 + 2)
33 = 32 * 3 = (3 + 3 + 3) + (3 + 3 + 3) + (3 + 3 + 3)
Динамический способ сделать это, попросить ввода. Подсчитайте, сколько раз его нужно добавить, используя два цикла. Затем установите петли, как показано выше.
Input
Store Num
Store Sum
Subt One /Reduce iterations for square.
Store Count
SquareLoop, Load Count
Skipcond 800
Jump ResetCounter /When count=0 end program.
Subt One
Store Count
Load Sum
Add Num
Output /Keeping track of the process.
Store Sum
Jump SquareLoop
ResetCounter, Load Num
Subt One /Reduce iterations for cube loop.
Store Count
Load Sum
Store Square /The squared value to sum.
CubeLoop, Load Count
Skipcond 800
Jump End /When count=0 end program.
Subt One
Store Count
Load Sum
Add Square
Output /Keeping track of the process.
Store Sum
Jump CubeLoop
Output
End, Halt
Num, Dec 0
Count, Dec 1
Square, Dec 0
Sum, Dec 0
One, Dec 1