专业品牌设计网站建设,品牌seo培训咨询,网页设计教程详细步骤ppt,威海网站制作团队环境#xff1a;VC
do while 会先执行do里面的循环体#xff0c;执行完去执行while的条件判断#xff0c;如果为真#xff0c;继续执行do里面的循环体#xff0c;如果为假#xff0c;则结束循环 C程序#xff1a;
#include stdio.h
int main()
{int i1,su…环境VC
do while 会先执行do里面的循环体执行完去执行while的条件判断如果为真继续执行do里面的循环体如果为假则结束循环 C程序
#include stdio.h
int main()
{int i1,sum0;do{sumi;i;}while(i100);printf(sum%d\n,sum);return 0;
}上面先执行sumi;i;接着执行i100如果为true则继续执行do循环否则结束循环。 反汇编
5: int i1,sum0;
00401028 C7 45 FC 01 00 00 00 mov dword ptr [ebp-4],1
0040102F C7 45 F8 00 00 00 00 mov dword ptr [ebp-8],0
6: do{
7: sumi;
00401036 8B 45 F8 mov eax,dword ptr [ebp-8]
00401039 03 45 FC add eax,dword ptr [ebp-4]
0040103C 89 45 F8 mov dword ptr [ebp-8],eax
8: i;
0040103F 8B 4D FC mov ecx,dword ptr [ebp-4]
00401042 83 C1 01 add ecx,1
00401045 89 4D FC mov dword ptr [ebp-4],ecx
9: }while(i100);
00401048 83 7D FC 64 cmp dword ptr [ebp-4],64h
0040104C 7E E8 jle main26h (00401036)
10: printf(sum%d\n,sum);
0040104E 8B 55 F8 mov edx,dword ptr [ebp-8]
00401051 52 push edx
00401052 68 1C 20 42 00 push offset string sum%d\n (0042201c)
00401057 E8 34 00 00 00 call printf (00401090)
0040105C 83 C4 08 add esp,8
11: return 0;
0040105F 33 C0 xor eax,eax
12: }
jle小于等于则跳转
从上面的程序我们可以看出sumi就是
00401036 8B 45 F8 mov eax,dword ptr [ebp-8]
00401039 03 45 FC add eax,dword ptr [ebp-4]
0040103C 89 45 F8 mov dword ptr [ebp-8],eaxi就是
0040103F 8B 4D FC mov ecx,dword ptr [ebp-4]
00401042 83 C1 01 add ecx,1
00401045 89 4D FC mov dword ptr [ebp-4],ecx汇编执行完这几条语句就去执行
00401048 83 7D FC 64 cmp dword ptr [ebp-4],64h
0040104C 7E E8 jle main26h (00401036)比较[ebp-4]和100的大小如果小于等于就跳转到00401036执行否则往下执行相当于C中i100如果小于等于继续执行循环体否则结束 C和混编混合编程
#include stdio.hint main()
{/*int i1,sum0;do{sumi;i;}while(i100);printf(sum%d\n,sum);*/char *strsum%d\n;__asm{//相当于 int i1,sum0mov eax,1mov ebx,0//相当于 sumi
ee: add ebx,eax//相当于 iinc eax//相当于while(i100)cmp eax,100jle ee//相当于printfpush ebxpush strcall printfadd esp,8}return 0;
}