LMC - 不会消极(小人电脑)

时间:2012-02-10 21:56:11

标签: assembly low-level little-man-computer

刚刚在这里与Little Man Computer合作,遇到了一个让我烦恼的问题。由于没有if等,我发现很难阻止奇数从偶数中减去负数。例如,我在一个循环和零分支中取3关10。但这永远不会达到零。所以我想知道如何让应用程序在它变为负数之前停止,例如在循环中减去10的3将是10,7,4,1,-2。但我希望它停在1,因此不会消极并克服这个问题。

这是我到目前为止所做的,只适用于偶数和偶数:

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

(首先,我想将第二个输入声明为变量是对的,对吗?或者不是?)

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

INP
STA DEC
INP
LOOP SUB DEC
OUT
BRP LOOP 
HLT
DEC DAT