64,646
社区成员
发帖
与我相关
我的任务
分享
int main()
{
//每个函数前面都有这些,是干嘛的呢
00871730 push ebp
00871731 mov ebp,esp
00871733 sub esp,0D8h
00871739 push ebx
0087173A push esi
0087173B push edi
0087173C lea edi,[ebp-0D8h]
00871742 mov ecx,36h
00871747 mov eax,0CCCCCCCCh
//这句代表什么
0087174C rep stos dword ptr es:[edi]
int x = 3;
0087174E mov dword ptr [x],3
int y = 4;
00871755 mov dword ptr [y],4
printf("sum = %d\n", x + y);
//呀的,都看不懂啊,我想哭了
0087175C mov eax,dword ptr [x]
0087175F add eax,dword ptr [y]
00871762 mov esi,esp
00871764 push eax
00871765 push offset string "World!" (876878h)
0087176A call dword ptr [__imp__printf (8793DCh)]
00871770 add esp,8
00871773 cmp esi,esp
00871775 call @ILT+400(__RTC_CheckEsp) (871195h)
return 0;
0087177A xor eax,eax
}
//main函数都结束了,还有啊
0087177C pop edi
0087177D pop esi
0087177E pop ebx
0087177F add esp,0D8h
00871785 cmp ebp,esp
00871787 call @ILT+400(__RTC_CheckEsp) (871195h)
0087178C mov esp,ebp
0087178E pop ebp
0087178F ret
--- 无源文件 -----------------------------------------------------------------------
//这么多3又是什么东东
00871790 int 3
00871791 int 3
00871792 int 3
00871793 int 3
;1: #include <stdio.h>
;2: int main()
;3: {
00401010 55 push ebp
00401011 8B EC mov ebp,esp
00401013 83 EC 48 sub esp,48h
00401016 53 push ebx
00401017 56 push esi
00401018 57 push edi
;4: int x = 3;
00401019 C7 45 FC 03 00 00 00 mov dword ptr [ebp-4],3
;5: int y = 4;
00401020 C7 45 F8 04 00 00 00 mov dword ptr [ebp-8],4
;6: printf("sum = %d\n", x + y);
00401027 8B 45 FC mov eax,dword ptr [ebp-4]
0040102A 03 45 F8 add eax,dword ptr [ebp-8]
0040102D 50 push eax
0040102E 68 1C 30 41 00 push offset string "sum = %d\n" (0041301c)
00401033 FF 15 A0 50 41 00 call dword ptr [__imp__printf (004150a0)]
00401039 83 C4 08 add esp,8
;7: return 0;
0040103C 33 C0 xor eax,eax
;8: }
0040103E 5F pop edi
0040103F 5E pop esi
00401040 5B pop ebx
00401041 8B E5 mov esp,ebp
00401043 5D pop ebp
00401044 C3 ret
1: #include <stdio.h>
2: int main()
3: {
//00401010 55 push ebp
//00401011 8B EC mov ebp,esp
//00401013 83 EC 48 sub esp,48h
//00401016 53 push ebx
//00401017 56 push esi
//00401018 57 push edi
4: int x = 3;
//00401019 C7 45 FC 03 00 00 00 mov dword ptr [ebp-4],3
5: int y = 4;
//00401020 C7 45 F8 04 00 00 00 mov dword ptr [ebp-8],4
6: printf("sum = %d\n", x + y);
//00401027 8B 45 FC mov eax,dword ptr [ebp-4]
//0040102A 03 45 F8 add eax,dword ptr [ebp-8]
//0040102D 50 push eax
//0040102E 68 1C 30 41 00 push offset string "sum = %d\n" (0041301c)
//00401033 FF 15 A0 50 41 00 call dword ptr [__imp__printf (004150a0)]
//00401039 83 C4 08 add esp,8
7: return 0;
//0040103C 33 C0 xor eax,eax
8: }
//0040103E 5F pop edi
//0040103F 5E pop esi
//00401040 5B pop ebx
//00401041 8B E5 mov esp,ebp
//00401043 5D pop ebp
//00401044 C3 ret
//1: #include <stdio.h>
//2: int main()
//3: {
00401010 55 push ebp
00401011 8B EC mov ebp,esp
00401013 83 EC 48 sub esp,48h
00401016 53 push ebx
00401017 56 push esi
00401018 57 push edi
//4: int x = 3;
00401019 C7 45 FC 03 00 00 00 mov dword ptr [ebp-4],3
//5: int y = 4;
00401020 C7 45 F8 04 00 00 00 mov dword ptr [ebp-8],4
//6: printf("sum = %d\n", x + y);
00401027 8B 45 FC mov eax,dword ptr [ebp-4]
0040102A 03 45 F8 add eax,dword ptr [ebp-8]
0040102D 50 push eax
0040102E 68 1C 30 41 00 push offset string "sum = %d\n" (0041301c)
00401033 FF 15 A0 50 41 00 call dword ptr [__imp__printf (004150a0)]
00401039 83 C4 08 add esp,8
//7: return 0;
0040103C 33 C0 xor eax,eax
//8: }
0040103E 5F pop edi
0040103F 5E pop esi
00401040 5B pop ebx
00401041 8B E5 mov esp,ebp
00401043 5D pop ebp
00401044 C3 ret
int main()
{
//每个函数前面都有这些,是干嘛的呢 //初始化
00871730 push ebp
00871731 mov ebp,esp
00871733 sub esp,0D8h
00871739 push ebx
0087173A push esi
0087173B push edi
0087173C lea edi,[ebp-0D8h]
00871742 mov ecx,36h
00871747 mov eax,0CCCCCCCCh
//这句代表什么 //;rep重复操作前缀 stos从累加器EAX传送4个字节,到由EDI作为指针的目的串中,同时修改EDI以指向 串中的下一个单
元。利用重复操作可以在串在建立一串相同的值。
0087174C rep stos dword ptr es:[edi]
int x = 3;
0087174E mov dword ptr [x],3
int y = 4;
00871755 mov dword ptr [y],4
printf("sum = %d\n", x + y);
//呀的,都看不懂啊,我想哭了 就是把值移动 然后相加一下
0087175C mov eax,dword ptr [x]
0087175F add eax,dword ptr [y]
00871762 mov esi,esp
00871764 push eax
00871765 push offset string "World!" (876878h)
0087176A call dword ptr [__imp__printf (8793DCh)]
00871770 add esp,8
00871773 cmp esi,esp
00871775 call @ILT+400(__RTC_CheckEsp) (871195h)
return 0;
0087177A xor eax,eax
}
//main函数都结束了,还有啊 堆栈要平衡 有始要有终
0087177C pop edi
0087177D pop esi
0087177E pop ebx
0087177F add esp,0D8h
00871785 cmp ebp,esp
00871787 call @ILT+400(__RTC_CheckEsp) (871195h)
0087178C mov esp,ebp
0087178E pop ebp
0087178F ret
--- 无源文件 -----------------------------------------------------------------------
//这么多3又是什么东东 //int 3 中断
00871790 int 3
00871791 int 3
00871792 int 3
00871793 int 3