汇编函数的调用

来源:互联网 发布:win7安装软件没反应 编辑:程序博客网 时间:2024/05/17 00:12

1:    #include "stdio.h"
2:    int add(int a, int b)
3:    {
00401020   push        ebp
00401021   mov         ebp,esp
00401023   sub         esp,44h
00401026   push        ebx
00401027   push        esi
00401028   push        edi
00401029   lea         edi,[ebp-44h]
0040102C   mov         ecx,11h
00401031   mov         eax,0CCCCCCCCh
00401036   rep stos    dword ptr [edi]
4:     int c;
5:     c = a + b;
00401038   mov         eax,dword ptr [ebp+8]
0040103B   add         eax,dword ptr [ebp+0Ch]
0040103E   mov         dword ptr [ebp-4],eax
6:     return c;
00401041   mov         eax,dword ptr [ebp-4]
7:    }
00401044   pop         edi
00401045   pop         esi
00401046   pop         ebx
00401047   mov         esp,ebp
00401049   pop         ebp
0040104A   ret

8:    int main()
9:    {
00401060   push        ebp
00401061   mov         ebp,esp
00401063   sub         esp,44h
00401066   push        ebx
00401067   push        esi
00401068   push        edi
00401069   lea         edi,[ebp-44h]
0040106C   mov         ecx,11h
00401071   mov         eax,0CCCCCCCCh
00401076   rep stos    dword ptr [edi]
10:    int Result = add(123, 456);
00401078   push        1C8h
0040107D   push        7Bh
0040107F   call        @ILT+0(add) (00401005)
00401084   add         esp,8
00401087   mov         dword ptr [ebp-4],eax
11:    printf("/n************/n");
0040108A   push        offset string "/n************/n" (0042001c)
0040108F   call        printf (004010c0)
00401094   add         esp,4
12:    return 0;
00401097   xor         eax,eax
13:   }

原创粉丝点击