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 故意让人不懂啊
页:
[1]