0

問題は、残りの数値が 1 になるまで、入力から 10 進数をループすることです。ただし、最初のループが 0 に達すると、次のように最初の桁から 1 を引いたところから再びループを開始する必要があります。

Input decimal for loop: 4
Your loop result is: 4321 321 21 1

または、

Input decimal for loop: 6
Your loop result is: 654321 54321 4321 321 21 1

私は今持っている、

DoWhileLoop:
DoWhileBody:
    stdout.put( " I => ", I );
    dec( I );
DoWhileTermination:
    cmp( I, 0 );
    jng DoWhileLoopDone;
    jmp DoWhileLoopBody;
DoWhileLoopDone:  

入力が4の場合、どちらが出力されますか

I => 4 I => 3 I => 2 I => 1

必要な連続性を得るためにネストされた for ループを内部で試しましたが、コンピューターをクラッシュさせずにそれをインクリメントする方法がわかりません...助けてください。

4

1 に答える 1

2

解決しました。この値を転送するには、内側のループと 2 番目の変数 (J) が必要でした。このように (ダミーコード)、

myWhileLoop:
myWhileLoopTermination:
    cmp( Y, 0 );
    jng WhileLoopDone;
myWhileLoopBody:

// Inner for loop goes in the body

    innerForLoop:
    InitializeinnerForLoop:        
    // Passing value of Y to Z
        mov( Y, Z );
    innerForLoopTerminationTest:
        cmp( Z, 0 );
        jng innerForLoopDone;
    innerForLoopBody:
        stdout.put( Z );
    innerForLoopDecrement:
        dec( Z );
        jmp innerForLoopTerminationTest;
    innerForLoopDone:

    dec( Y );
    jmp myWhileLoop;
myWhileLoopDone: 
于 2013-03-30T01:44:19.723 に答える