博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC中使用内联汇编(转载)
阅读量:6411 次
发布时间:2019-06-23

本文共 918 字,大约阅读时间需要 3 分钟。

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)

转载地址:http://vrzra.baihongyu.com/

你可能感兴趣的文章
java发送邮件 不登陆_Java邮件到Exchange Server“不支持登录方法”
查看>>
编程学习初体验(5. 如何自学编程)(2)
查看>>
思科ISR G1与ISR G1C的区别
查看>>
利用perl提取web配置文件中的域名对应的路径
查看>>
Centos5上安装JRE和LUMAQQ
查看>>
关于监控工具的主动发起性能测试
查看>>
我的友情链接
查看>>
OpenSSL学习(十六):基础-指令rand
查看>>
KeyMob致力于打造国内领先的移动广告平台
查看>>
路由选路原则
查看>>
jvm 学习(一)
查看>>
JavaScript简介
查看>>
SQL Server附加数据库拒绝访问解决方法汇总
查看>>
SM2算法原理及实现
查看>>
RHCA教材翻译计划
查看>>
js-小括号在不同场合下的作用
查看>>
我的友情链接
查看>>
kvm中虚拟机的硬盘扩容
查看>>
Android (Launch Mode) 四种启动模式
查看>>
透视学理论(二)
查看>>