2012-02-10 80 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