我正在尝试解决这个代码挑战:
编写一个 LMC 程序来计算用户提供的数字的总和。在停止程序之前将总和显示为输出。如果用户提供的输入值少于或等于十个,则仅对偶数求和。奇数将被忽略。如果用户提供了十个以上的值,则仅对第十个输入之后的所有奇数求和。现有的偶数总和应保留。如果用户在任何时候输入零,则会显示总和。
例如:
输入值:3, 3, 4, 0
结果:4输入值:2、3、7、0
结果:2输入值:1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,0 结果:
43
在这里,您可以看到我的程序使用第一个示例的输入运行,它显示输出为 0(而不是预期的 4):
我不确定代码有什么问题会给出错误的输出。我的错误在哪里?
代码:
start
INP
STA input
BRZ halt
LDA inputCounter
SUB ten
BRP afterTen
// Input <= 10
LDA input
STA isEven
SUB one
BRP oddNumber
LDA isEven
ADD one
STA isEven
SUB two
BRZ evenNumber
oddNumber LDA inputCounter
ADD one
STA inputCounter
BRA start
evenNumber LDA input
ADD evenSum
STA evenSum
LDA inputCounter
ADD one
STA inputCounter
BRA start
// Input > 10
afterTen LDA input
STA isEven
SUB one
BRP evenAfterTen
LDA isEven
ADD one
STA isEven
SUB two
BRZ oddAfterTen
evenAfterTen LDA inputCounter
ADD one
STA inputCounter
BRA start
oddAfterTen LDA input
ADD oddSum
STA oddSum
LDA inputCounter
ADD one
STA inputCounter
BRA start
// Display sum
halt LDA evenSum
ADD oddSum
OUT
HLT
// Variables
evenSum DAT 0
oddSum DAT 0
inputCounter DAT 0
isEven DAT 0
input DAT 0
// Constants
one DAT 1
two DAT 2
ten DAT 10