求和输入数字的程序不起作用
Program to sum input numbers is not working
我正在尝试编写一个程序,首先从用户那里获取 n 个输入,然后计算这些数字的总和。然后我希望程序打印总和是偶数还是奇数。
例如,如果用户输入 3,he/she 将必须输入 3 个数字(例如 3、2、5):然后程序将计算这些 (3 + 2 + 5) 如果答案 (10) 是奇数或偶数,则打印出来。
我以为我编码正确,但在 LMC 模拟器中却没有 运行,有人可以帮我找出错误吗?
我的代码:
INP
STA b
ab INP
STA a
LDA total
ADD a
STA total
STA count
LDA b
SUB one
STA b
BRZ number
BRP loop
bc LDA count
SUB two
STA count
BRZ evennumber
BRP number
LDA total
OUT
LDA space
OTC
OTC
LDA o
OTC
LDA d
OTC
OTC
LDA e
OTC
HLT
cd LDA total
OUT
LDA space
OTC
OTC
LDA p
OTC
LDA A
OTC
LDA r
OTC
HLT
a DAT 0
b DAT 0
total DAT 0
one DAT 1
two DAT 2
count DAT 0
o DAT 111
space DAT 32
d DAT 100
e DAT 101
p DAT 112
A DAT 97
r DAT 114
您代码中的主要问题是标签不匹配。
一方面,您定义了以下标签:
- ab
- 公元前
- 光盘
...但是您引用了以下标签:
- 循环
- 人数
- 偶数
因此您的代码无效...它不会解析。
第二组标签更有意义,而“ab”、“bc”、“cd”则毫无意义:它们无助于代码的查看者理解它们的含义。因此,请将您的代码与第二组对齐。
另外,没有定义LMC是否区分大小写,所以使用变量名a
和另一个A
不一定支持。相反,给出有意义的名字。第一个 a
实际上是您输入的数字,需要添加到总和中,因此可以将其称为 summand
而不是 a
。另一个 A
可以称为 a
,因为它实际上代表字母“a”。 b
也没有意义。它表示预期的输入数量,因此可以将其称为 inputs
.
综合起来,您的代码将如下所示:
#input: 2 4 5
INP
STA inputs
loop INP
STA summand
LDA total
ADD summand
STA total
STA count
LDA inputs
SUB one
STA inputs
BRZ number
BRP loop
number LDA count
SUB two
STA count
BRZ evennumber
BRP number
LDA total
OUT
LDA space
OTC
OTC
LDA o
OTC
LDA d
OTC
OTC
LDA e
OTC
HLT
evennumber LDA total
OUT
LDA space
OTC
OTC
LDA p
OTC
LDA a
OTC
LDA r
OTC
HLT
summand DAT 0
inputs DAT 0
total DAT 0
one DAT 1
two DAT 2
count DAT 0
o DAT 111
space DAT 32
d DAT 100
e DAT 101
p DAT 112
a DAT 97
r DAT 114
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.72/lmc.js"></script>
我正在尝试编写一个程序,首先从用户那里获取 n 个输入,然后计算这些数字的总和。然后我希望程序打印总和是偶数还是奇数。
例如,如果用户输入 3,he/she 将必须输入 3 个数字(例如 3、2、5):然后程序将计算这些 (3 + 2 + 5) 如果答案 (10) 是奇数或偶数,则打印出来。
我以为我编码正确,但在 LMC 模拟器中却没有 运行,有人可以帮我找出错误吗?
我的代码:
INP
STA b
ab INP
STA a
LDA total
ADD a
STA total
STA count
LDA b
SUB one
STA b
BRZ number
BRP loop
bc LDA count
SUB two
STA count
BRZ evennumber
BRP number
LDA total
OUT
LDA space
OTC
OTC
LDA o
OTC
LDA d
OTC
OTC
LDA e
OTC
HLT
cd LDA total
OUT
LDA space
OTC
OTC
LDA p
OTC
LDA A
OTC
LDA r
OTC
HLT
a DAT 0
b DAT 0
total DAT 0
one DAT 1
two DAT 2
count DAT 0
o DAT 111
space DAT 32
d DAT 100
e DAT 101
p DAT 112
A DAT 97
r DAT 114
您代码中的主要问题是标签不匹配。
一方面,您定义了以下标签:
- ab
- 公元前
- 光盘
...但是您引用了以下标签:
- 循环
- 人数
- 偶数
因此您的代码无效...它不会解析。
第二组标签更有意义,而“ab”、“bc”、“cd”则毫无意义:它们无助于代码的查看者理解它们的含义。因此,请将您的代码与第二组对齐。
另外,没有定义LMC是否区分大小写,所以使用变量名a
和另一个A
不一定支持。相反,给出有意义的名字。第一个 a
实际上是您输入的数字,需要添加到总和中,因此可以将其称为 summand
而不是 a
。另一个 A
可以称为 a
,因为它实际上代表字母“a”。 b
也没有意义。它表示预期的输入数量,因此可以将其称为 inputs
.
综合起来,您的代码将如下所示:
#input: 2 4 5
INP
STA inputs
loop INP
STA summand
LDA total
ADD summand
STA total
STA count
LDA inputs
SUB one
STA inputs
BRZ number
BRP loop
number LDA count
SUB two
STA count
BRZ evennumber
BRP number
LDA total
OUT
LDA space
OTC
OTC
LDA o
OTC
LDA d
OTC
OTC
LDA e
OTC
HLT
evennumber LDA total
OUT
LDA space
OTC
OTC
LDA p
OTC
LDA a
OTC
LDA r
OTC
HLT
summand DAT 0
inputs DAT 0
total DAT 0
one DAT 1
two DAT 2
count DAT 0
o DAT 111
space DAT 32
d DAT 100
e DAT 101
p DAT 112
a DAT 97
r DAT 114
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.72/lmc.js"></script>