先看课文
下面的我的试验代码
#include <iostream>
using namespace std;
int p[5] = {1,12,123,1234,12345};
void main()
{
int a;
_asm
{
mov eax,0
mov ecx, 1
aa:
inc eax
loop aa

mov a,eax
}
cout<< a <<endl;
}按照书的意思,把ECX减一之后就是0了,按就不应该在执行循环了,那最后的输出结果怎么是1

解决方案 »

  1.   

    不是没执行循环吗?inc eax
    这里不是加了1了吗?
    然后 mov a, eax;
    这个时候不就是a=1了吗?
      

  2.   

    哎呀,这个东西好像是C中的 do while 循环,应该是先执行一下,然后在判断吧?
      

  3.   

    对 效果如同 do while 
      

  4.   

    #include <iostream>
    using namespace std;
    int p[5] = {1,12,123,1234,12345};
    void main()
    {
        int a =0;
    int i =1; //do while 效果
    __asm
    {
    WHILE:
    cmp i,0
    jle END
    inc a
    dec i
    jmp WHILE
    END:
    }  cout<< a <<endl;}