反汇编知识整理--for,while,do-while的循环机制 -- 老码识途任重而道远呀

for的机制

5:        int i=1,j;
00401268   mov         dword ptr [ebp-4],1
6:        for(i=3;i<=10;i+=2)
0040126F   mov         dword ptr [ebp-4],3 (执行for中第一句)
00401276   jmp         main+31h (00401281)  (跳到判断语句)
00401278   mov         eax,dword ptr [ebp-4]//
0040127B   add         eax,2                  //  (执行for中第三句的自加)
0040127E   mov         dword ptr [ebp-4],eax//
00401281   cmp         dword ptr [ebp-4],0Ah// 判断语句
00401285   jg          main+3Fh (0040128f) // ??????
7:        {
8:            j=i;
00401287   mov         ecx,dword ptr [ebp-4]
0040128A   mov         dword ptr [ebp-8],ecx
9:        }
0040128D   jmp         main+28h (00401278) // 跳到执行for中的第二句

for中三句话的先后顺序: 第一句,第三句,第二句

执行过程: 第一句,第二句,程序块 , 第三句,第二句,程序块……

while机制:

5:        int a=5;
00401268   mov         dword ptr [ebp-4],5
6:        while(a>1)
0040126F   cmp         dword ptr [ebp-4],1
00401273   jle         main+30h (00401280) //???????
7:        {
8:            a--;
00401275   mov         eax,dword ptr [ebp-4]
00401278   sub         eax,1
0040127B   mov         dword ptr [ebp-4],eax
9:        }
0040127E   jmp         main+1Fh (0040126f)

do-while机制:


5:        int a=10;
00401268   mov         dword ptr [ebp-4],0Ah
6:        do
7:        {
8:                a--;
0040126F   mov         eax,dword ptr [ebp-4]
00401272   sub         eax,1
00401275   mov         dword ptr [ebp-4],eax
9:        }while(a>4);
00401278   cmp         dword ptr [ebp-4],4
0040127C   jg          main+1Fh (0040126f)  // 从这里可以猜到jg有跳转的功能,那它与jmp有什么不同呢??? 跳到指定的指令地址上去?






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值