0

问题想从输入循环遍历一个小数,直到剩下的唯一数字是一。但是,一旦第一个循环达到 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

解决了。我需要一个内部循环和第二个变量(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 回答