一般情况下实现循环
int result=0;
for (int i=0;i<=100;i++){result +=1;
}
mov eax,0 #用eax保存result,初始值为0
mov edx,1 #用edx保存i,初始值为1
cmp edx,100 #比较i和100 if(i>100)如果大于一百就直接跳过
jg L2 #如果i>100跳转到L2 goto l2
L1: #循环主体
add eax,edx #result+=1
inc edx #i++
cmp edx,100 #比较i和100 if(i<=100)就回到循环,如果有大于100了,就跳出
jle L1
L2:
更简单的用loop实现循环
for (int i=500;i>0;i--){做一些处理;
}
mov ecx,500
Looptop;
'''
do something
'''
loop Looptop
这里的loop Looptop 等价于
dec ecx #ecx--
cmp ecx,0 #做对比
jne Looptop #如果不等于就跳到looptop
ecx作为循环计数器,不可用其他代替
补充:loopx指令--如loopnz,loopz
loopnz--当ecx!=0&&ZF==0的时候,继续循环