我正在尝试编写一个程序,输入一个小于 10 的正数并输出第一个数字的总和。例如 5 将是 5+4+3+2+1。这些命令是停止、加载、存储、加、求和、乘、除、输入、输出、分支、如果为 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
好吧,我认为它的工作方式是加载一些数字 n 并添加一个总和 0,然后将该总和存储为 n+sum。然后你再次加载 n 并减去 1 并将其存储为新的总和。但是我需要它重复这个直到 n 达到 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 =指定常数,但我需要重复的是减一并加上总和直到n达到0。如果不为零,则分支是BRGT,如果零是BZ并且分支是BR,则分支,LD是负载。我知道我需要重复什么,但我不知道你是如何用汇编语言做到这一点的。