1.使用C中的局部变量和全局变量。
CPP
12345678910 | int a = 5,b=6,c; __asm { xor edx,edx ;edx=0 add edx,a ;edx +=a add edx,b ;edx +=b add edx,g_nC;使用全局变量 mov c,edx ;c=edx } printf("UseParameter : %d\n",c); |
2.调用C中函数,stdcall方式和cdecl方式,pascal方式在控制台下没整出来,Delphi也不会就算了,和stdcall差不多,就是入栈方式不一样。
cdecl:从右到左入栈,由调用者清栈,代码如下:
CPP
1234567891011121314151617181920 | __cdecl int cdecl_sub(int a,int b){ return a-b;} void UseCdecl(){ int nRet=0;__asm{ mov eax,6mov ebx,5push ebxpush eaxcall cdecl_subadd esp,8 ;调用者维护栈平衡mov nRet,eax}printf("UseCdecl : %d\n",nRet);} |
stdcall:从右到左入栈,函数自己清栈。代码如下:
CPP
123456789101112131415161718 | __stdcall int stdcall_sub(int a,int b){ return a-b;}void UseStdCall(){ int nRet=0; __asm { mov eax,6 mov ebx,5 push ebx push eax call stdcall_sub mov nRet,eax } printf("UseStdCall : %d\n",nRet);} |
嘻嘻,就演示这么多,其他的调用方式也应该类似。
源码下载:
(4.3 KiB, 527 hits)