2012-02-10 6 views
0

여기 Little Man 컴퓨터에서 작업하면서 저를 괴롭히는 종류의 문제가 발생했습니다. if 등이 없으므로 짝수에서 빼면 홀수가 음수로 변하는 것을 막기가 어렵습니다. 예를 들어, 루프에서 0에서 3을 취하고 0에서 분기합니다. 하지만 결코 제로에 부딪치지 않습니다. 그래서 나는 그것이 네거티브가되기 전에 앱을 멈추게하는 방법을 알고 싶다. 예를 들어 루프에서 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 

(시작하기, 나는 변수로 두 번째 입력을 선언하는 것이 좋습니다 것 같아요 그렇지 않습니까?)

나를 도울 수 있다면 크게 감사하겠습니다. 그리고 이것에 대한 영구적 인 해결책을 제시하십시오.

답변

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로, 단일 증분은 작동하지 않고, 2 증분으로 0이됩니다. 순열을 상상해보십시오. 금요일 오후에 내 두뇌가 울부 짖는다. (따라서 '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