HLA高级装配连续循环

时间:2013-03-29 21:49:35

标签: loops assembly count continuous hla

问题想要从输入循环一个小数,直到剩下的唯一数字为1。但是,一旦第一个循环达到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循环来获得所需的连续性但是我不知道如何在不崩溃我的计算机的情况下增加它...帮助?

1 个答案:

答案 0 :(得分:1)

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