tygv726 发表于 2011-1-23 20:50:26

C语言培训系列免费教程第六课

C语言培训系列免费教程第六课


c语言系列教程 第六课   循环语句实例以及简单逆向分析讲师: 一直很安静   
本节课知识点:1.goto...语句
             2.while 语句
             3.do while 语句
             4.for 语句.....            
goto...语句"""" 无条件跳转语句....
#include"stdio.h"
Void main()
{
   Int i, sum =0;
I = 1;
Loob:if(i<=100)
{
Sum = sum + i;
I++;
Goto loop;
}
Printf("%d\n",sum);
}

while 语句"""""""
#include"stdio.h"
void main()
{
      int i, sum =0;
      i = 1;
while (i<=100)   /*先判断后执行.*/
{
      sum = sum + i;
               i++;
}
         printf("%d\n",sum);
}


3.do while 语句
#include"stdio.h"
void main()
{
      int i, sum =0;
      i = 1;
      do
      {
                sum = sum + i;
                i++;
      }
      while (i<=100);   /*先执行后判断.*/
    printf("%d\n",sum);
}
For循环 语句.....
#include"stdio.h"
void main()
{
      int i, sum;
      
      for (i = 1,sum = 0;i<=100;i++)
      {
                sum = sum + i;
      }
   printf("%d\n",sum);
}

While汇编代码......
1:    #include"stdio.h"
2:    void main()
3:    {
00401010   push      ebp
00401011   mov         ebp,esp
00401013   sub         esp,48h
00401016   push      ebx
00401017   push      esi
00401018   push      edi
00401019   lea         edi,
0040101C   mov         ecx,12h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr
4:      int i, sum =0;
00401028   mov         dword ptr ,0
5:      i = 1;
0040102F   mov         dword ptr ,1
6:    while (i<=100)   /*先判断后执行.*/
00401036   cmp         dword ptr ,64h
0040103A   jg          main+40h (00401050)
7:    {
8:      sum = sum + i;
0040103C   mov         eax,dword ptr
0040103F   add         eax,dword ptr
00401042   mov         dword ptr ,eax
9:             i++;
00401045   mov         ecx,dword ptr
00401048   add         ecx,1
0040104B   mov         dword ptr ,ecx
10:   }
0040104E   jmp         main+26h (00401036)
11:
12:      printf("%d\n",sum);
00401050   mov         edx,dword ptr
00401053   push      edx
00401054   push      offset string "%d\n" (0042201c)
00401059   call      printf (00401090)
0040105E   add         esp,8
13:   }
00401061   pop         edi
00401062   pop         esi
00401063   pop         ebx
00401064   add         esp,48h
00401067   cmp         ebp,esp
00401069   call      __chkesp (00401110)
0040106E   mov         esp,ebp
00401070   pop         ebp
00401071   ret

Do..while::;

1:    #include"stdio.h"
2:    void main()
3:    {
00401010   push      ebp
00401011   mov         ebp,esp
00401013   sub         esp,48h
00401016   push      ebx
00401017   push      esi
00401018   push      edi
00401019   lea         edi,
0040101C   mov         ecx,12h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr
4:      int i= 1, sum =0;
00401028   mov         dword ptr ,1
0040102F   mov         dword ptr ,0
5:
6:      do
7:      {
8:            sum = sum + i;
00401036   mov         eax,dword ptr
00401039   add         eax,dword ptr
0040103C   mov         dword ptr ,eax
9:            i++;
0040103F   mov         ecx,dword ptr
00401042   add         ecx,1
00401045   mov         dword ptr ,ecx
10:       }
11:       while (i<=100);   /*先执行后判断.*/
00401048   cmp         dword ptr ,64h
0040104C   jle         main+26h (00401036)
12:       printf("%d\n",sum);
0040104E   mov         edx,dword ptr
00401051   push      edx
00401052   push      offset string "%d\n" (0042201c)
00401057   call      printf (00401090)
0040105C   add         esp,8
13:   }
0040105F   pop         edi
00401060   pop         esi
00401061   pop         ebx
00401062   add         esp,48h
00401065   cmp         ebp,esp
00401067   call      __chkesp (00401110)
0040106C   mov         esp,ebp
0040106E   pop         ebp

For循环......
:    #include"stdio.h"
2:    void main()
3:    {
00401010   push      ebp
00401011   mov         ebp,esp
00401013   sub         esp,48h
00401016   push      ebx
00401017   push      esi
00401018   push      edi
00401019   lea         edi,
0040101C   mov         ecx,12h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr
4:      int i, sum;
5:
6:      for (i = 1,sum = 0;i<=100;i++)
00401028   mov         dword ptr ,1
0040102F   mov         dword ptr ,0
00401036   jmp         main+31h (00401041)
00401038   mov         eax,dword ptr
0040103B   add         eax,1
0040103E   mov         dword ptr ,eax
00401041   cmp         dword ptr ,64h
00401045   jg          main+42h (00401052)
7:      {
8:            sum = sum + i;
00401047   mov         ecx,dword ptr
0040104A   add         ecx,dword ptr
0040104D   mov         dword ptr ,ecx
9:
10:       }
00401050   jmp         main+28h (00401038)
11:       printf("%d\n",sum);
00401052   mov         edx,dword ptr
00401055   push      edx
00401056   push      offset string "%d\n" (0042201c)
0040105B   call      printf (00401090)
00401060   add         esp,8
12:   }
00401063   pop         edi
00401064   pop         esi
00401065   pop         ebx
00401066   add         esp,48h
00401069   cmp         ebp,esp
0040106B   call      __chkesp (00401110)
00401070   mov         esp,ebp
00401072   pop         ebp
00401073   ret

http://www.hackfans.com.cn/C6.zip

58255oldphone 发表于 2011-1-23 21:09:17

故意让人不懂啊
页: [1]
查看完整版本: C语言培训系列免费教程第六课