Я пытаюсь написать программу, которая вводит положительное число меньше 10, и выводит сумму первых чисел. Например 5 будет 5 + 4 + 3 + 2 + 1. Эти команды Стоп, нагрузки, магазин, Добавить, Sum, Умножение, Деление, вход, выход, Branch, Отделение если 0, и ветвь, если не 0. Может кто-нибудь помочь мне здесь. Я вроде застрял. хорошо, что я написал:
IN n
LD n
ADD sum
STO sum
LD n
SUB one
ADD sum
STO sum
BRGT haw
LD n
BR done
haw: OUT sum
done: STOP
DC n 4
DC sum 0
DC one 1
Ну, как я вижу его работать вы загружаете некоторое число п и добавить сумму 0, а затем сохранить эту сумму, как п + сумма. Затем вы загружаете п снова и вычесть 1 и сохранить его в качестве нового суммы. Но мне нужно, чтобы повторять это до тех пор, пока не достигнет п 0. Так как же мне это сделать?
Итак, что мне нужно сделать, это использовать ветвь, если 0 и ветвь, если не равно 0. Я думаю, что она у меня? так:
IN n
LD n
ADD sum
STO sum
BR CAW
CAW: LD n
SUB ONE
STO n
BRGT HAW
BZ TAW
HAW: ADD SUM
STO SUM
BR CAW
TAW: OUT SUM
DC SUM 0
DC ONE 1
DC = Места Constant, но то, что мне нужно повторить это вычитание по одному и добавляя сумму до п не достигнет 0. Branch, если не нуль BRGT и ветви, если нуль BZ и ветвь BR, LD является нагрузка. Я знаю, что мне нужно повторить, но я не знаю, как вы это делаете на языке ассемблера.













