2012-02-10 19 views
0

只是在这里与小人电脑工作,并遇到了一个问题,这是一种困扰我的问题。由于没有if等,我发现当从偶数中减去偶数时,很难阻止奇数进入负数。例如,我在一个循环中取10个3,并在零处分支。但是这从来没有达到零。所以我想知道如何让应用程序在进入否定之前停止,例如,从循环中的10减去10将是10,7,4,1,-2。但我希望它停在1,因此不会消极并克服这个问题。LMC - 不进入负面(小人电脑)

这是我到目前为止,只适用于连和连号:

INP 
STA DEC 
INP 
LOOP SUB DEC 
OUT 
BRZ QUIT 
BRA LOOP 
QUIT HLT 
DEC DAT 

(开始的时候,我想这会是一个好主意,宣布第二输入作为一个变量,对不对?)

如果你能帮助我,我将不胜感激。并想出一个永久的解决方案。

回答

1

我知道我会后悔的,但由于这似乎相当简单的,我会尝试这一点没有能够测试:-)

INP 
STA DEC 
INP 
LOOP SUB DEC 
BRP OUTPUT 
ADD DEC    <-- we went negative, so add back once 
HLT 
OUTPUT OUT 
BRA LOOP 
DEC DAT 
+0

如果初始数量会发生什么是10,递减是3? (10,7,4,1,-2 - 仍然不起作用)看起来OP有一个难以解决的问题。 – KevinDTimm 2012-02-10 22:11:22

+0

@KevinDTimm我第一次听说LMC,所以我很可能错过了一些至关重要的事情,但如果事情像我想象的那样,我不能看到其他值的问题......?最后减去并加回来可能不是很美,但我直接射击。 – 2012-02-10 22:22:08

+0

你和我都是,但我不认为他的问题的解决方案很简单 - OP的例子会达到-2,单个增量无效,需要2个增量才能达到零 - 想象排列在星期五下午让我的大脑哭泣。 (因此'站不住脚'的评论) – KevinDTimm 2012-02-10 22:30:48

0
INP 
STA first 
INP 
LOOP SUB first 
BRP yesrepeat 
ADD one 
HLT 
yesrepeat OUT 
BRA LOOP 
first DAT 
one dat 001 
0
INP 
STA DEC 
INP 
LOOP SUB DEC 
OUT 
BRP LOOP 
HLT 
DEC DAT