3

我在试图让我的循环正常工作时遇到了一些麻烦。这是我需要做的

将 3 加到 i1 并将结果存储到 i1 将 i2 乘以 3 并将结果存储到 i2

如果 i1 大于 100 或如果以下两个都为真,则终止循环:循环的迭代次数超过 15 次,并且 i2 的值至少为 999999。

它还没有完成,但我想知道是否可以在循环中使用 2 CMP?这是我到目前为止所拥有的:

        {
unsigned long i1;
unsigned long i2;
unsigned long i3;
unsigned long i4;
_asm
    {
    mov     i1, 1
    mov     i2, 1
    mov     eax, i1
    mov     ebx, i2
    mov     ecx, 3
Start:
    add     eax, ecx
    cmp     eax, 100
    jnz     Start
    jge     Done


Start2:
    imult   ebx, ecx
    cmp     ebx, 999999



Done:
    mov     i1, eax
    }
    cout << "results are "  << (unsigned long) i1 << ", "
                            << (unsigned long) i2 << ", "
                            << (unsigned long) i3 << ", "
                            << (unsigned long) i4 << endl;

}
4

1 回答 1

1

您有cmp两个不同的过程(不是循环,正如@harold 提到的那样)。cmp你可能想要在in之后进行某种跳跃Start2,否则你只会退回到Done. 但是,根据999999眼前的情况,看起来这就是意图。因此,如果您尚未达到该值,则可以执行跳回“循环”。否则,如果您达到该值,请继续Done

于 2013-10-01T19:13:54.633 回答