2012-02-10 4 views
0

ここではLittle Man Computerで働いていて、私を悩ませている問題に遭遇しました。 ifなどはないので、偶数から減算すると、奇数が負数になるのを止めるのが難しいと思っています。たとえば、私はループで10を3、ゼロで分岐します。しかし、それは決してゼロに達することはありません。だから私はそれが負になる前に停止するアプリケーションを取得する方法を知りたい、例えばループから10を引いた3は10,7,4,1、-2になります。しかし、私はそれが1で止まることを望むので、この問題を否定して克服しません。LMC - 否定的ではない(小さな人間のコンピュータ)

これは私がこれまで持っているものである、とだけでもと偶数の作品:

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

(オフ開始するには、私は変数として第2の入力を宣言することをお勧めだろうと思い、そうですか?)

私を助けてくれたら大変感謝しています。そして、これに永続的な解決策を思いついてください。

答えて

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

+0

@KevinDTimm最初にLMCを聞いたので、何かが欠けている可能性が非常に高いですが、私が考えたようなものがあれば、他の値で問題を見ることはできません...?最後に取り消したり追加したりするのは美しくないかもしれませんが、私はまっすぐに射撃していました。 –

+0

あなたと私はどちらも問題は解決しているとは思えません。OPの例は-2になり、1つのインクリメントはうまくいかず、0になるには2つのインクリメントが必要になります。金曜日の午後に私の頭が泣く。 (したがって、 'untenable'コメント) – KevinDTimm

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 
関連する問題