while常用格式如下
while(表达式){
//功能代码
}
C语言代码
#include <stdio.h>
void F(int n){
int i = 0;
while (i < n){
printf("%d", i);
i++;
}
}
int main(){
F(10);
return 0;
}
对应汇编代码
![image-20220216151047992](https://wspggw.oss-cn-beijing.aliyuncs.com/img/image-20220216151047992.png)
00A213C0 push ebp
00A213C1 mov ebp,esp
00A213C3 sub esp,0CCh
00A213C9 push ebx
00A213CA push esi
00A213CB push edi
00A213CC lea edi,[ebp+FFFFFF34h]
00A213D2 mov ecx,33h
00A213D7 mov eax,0CCCCCCCCh
00A213DC rep stos dword ptr es:[edi]
00A213DE mov dword ptr [ebp-8],0
00A213E5 mov eax,dword ptr [ebp-8]
00A213E8 cmp eax,dword ptr [ebp+8]
00A213EB jge 00A21413
00A213ED mov esi,esp
00A213EF mov eax,dword ptr [ebp-8]
00A213F2 push eax
00A213F3 push 0A25858h
00A213F8 call dword ptr ds:[00A29114h]
00A213FE add esp,8
00A21401 cmp esi,esp
00A21403 call 00A2113B
00A21408 mov eax,dword ptr [ebp-8]
00A2140B add eax,1
00A2140E mov dword ptr [ebp-8],eax
00A21411 jmp 00A213E5
00A21413 pop edi
00A21414 pop esi
00A21415 pop ebx
00A21416 add esp,0CCh
00A2141C cmp ebp,esp
00A2141E call 00A2113B
00A21423 mov esp,ebp
00A21425 pop ebp
00A21426 ret