三种循环反汇编代码比较

for循环

for (i = 0; i< 50; i++)

{

    c = c+i;

}

1.       为循环变量赋值              mov dword ptr [i], 0

2.       跳转到循环变量比较处 jmp [比较地址]

3.       修改循环变量                  mov eax, dword ptr[i]

                                          add ,eax ,1

                                          mov dword ptr[i], eax

4.       执行循环体                      mov eax , dword ptr[c]

                                           add eax, dword ptr[i]

                                          mov dword ptr[c], eax

5.       比较循环变量边界值     cmp dowrd ptr [i], 32

                                          jge [循环结束]

6.       跳转到循环开始的地方 jge [循环开始]

 

do while 循环

do

{

    a = a +1;

}

while(a < 50)

 

1.       执行循环体         mov eax, dword ptr [a]

                             add eax, 1

                             mov dword ptr[a], eax

2 比较结束条件   cmp dword ptr[a], 32

                                   jl [循环开始]

while 循环

while (a < 50)

{

    a = a + 1;

}

1.       比较循环控制条件   cmp dword ptr[a], 32

                                    jge [循环结束]

2.       循环体                       mov eax, dword ptr[a];

                                   add eax , 1

                                   mov dword ptr[i], eax

3.       跳转到循环开始      jmp [循环开始]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值