int X = 0;
int Y = 1;
while(X <= 10){
if(X%2 == 0)
Y = Y * X;
else
Y++;
X++;
}
cout << "Y is: " << Y;
这就是我的Easy68k代码。Easy68k,实现此while循环
ORG $1000
START: ; first instruction of program
MOVE.W #0,D1 ;PUT 0 IN D1 (X)
MOVE.W #1,D2 ;PUT 1 IN D2 (Y)
LOOP CLR.W D3 ;Find the remainder
MOVE.W D1,D3
DIVU #2,D3
SWAP D3
CMP #0,D3 ;Compare remainder with 0
BEQ EQUAL ;If equal, then go to equal
ADD.W #1,D2 ;Y++
ADD.W #1,D1 ;X++
CMP #11,D1 ;Compare D1 with 11
BEQ DONE ;If D1 equals 11, break loop.
BRA LOOP
EQUAL MULU.W D1,D2 ;Multiply D1 and D2 and store it in D2
ADD.W #1,D1 ;X++
CMP #11,D1 ;Compare D1 with 11
BEQ DONE ;If D1 equals 11, break loop.
BRA LOOP
DONE LEA MESSAGE,A1
MOVE.W #14,D0
TRAP #15
MOVE.W D2,D1
MOVE.W #3,D0
TRAP #15
SIMHALT ; halt simulator
MESSAGE DC.W 'Y is: ',0
END START ; last line of source
我不完全知道什么是不正确我的代码,但我有一种感觉是在循环部分的开头的问题。我一直跟着代码,但我仍然无法弄清楚它出错的地方。当我运行它时,它输出 Y是:10. D1和D2也是A或10.任何帮助表示赞赏。
谢谢,它现在的作品。我是新来的stackoverflow所以一个简单的问题:我想回答自己的问题与工作代码或编辑我的原始帖子,包括工作代码? – NobodyKnows
@NobodyKnows不,如果一个答案是正确的,你可以用复选标记来选择答案,并且你可以提出有帮助的问题。复选标记表明该答案是解决您的问题的方法。你的问题应该保持原样,因为它显示了原始问题,除非修复是重大的,答案没有明确解释它,但这很少见。 –