用机器语言实现循环

一般情况下实现循环

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的时候,继续循环

posted @ 2025-09-17 09:59  是我,米老鼠  阅读(3)  评论(0)    收藏  举报