32位汇编语言程序设计 第3版 PPT课件 32位汇编语言07.ppt

32位汇编语言程序设计 第3版 PPT课件 32位汇编语言07.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

*采用“_cdecl”调用规范的例7-4反汇编代码 //主函数中调用MEAN函数 mean(array,COUNT);对应的汇编代码(包括注释)push 10 ;0000000aHlea eax,DWORDPTR_array$[ebp]push eaxcall ?mean@@YAJQAJJ@Z ;meanadd esp,8返回 …… ret 0?mean@@YAJQAJJ@ZENDP32位汇编语言程序设计*第7章与VisualC++的混合编程*32位汇编语言程序设计*第7章与VisualC++的混合编程*32位汇编语言程序设计*第7章与VisualC++的混合编程*第7章与VisualC++的混合编程7.1嵌入汇编7.2模块连接7.3调用高级语言函数7.4使用VisualC++开发环境第7章与VisualC++的混合编程掌握嵌入汇编和模块连接进行混合编程方法,理解堆栈帧的作用熟悉汇编语言调用高级语言函数和开发调试过程*混合编程软件开发通常采用高级语言,以提高开发效率某些部分利用汇编语言,以提高程序的运行效率汇编语言的优点:开发的程序占用存储空间小、运行速度快等汇编语言的缺点:与机器密切相关、移植性差,编程烦琐、对汇编语言程序员要求较高混合编程:汇编语言与高级语言、或高级语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程汇编语言与C和C++语言的混合编程嵌入汇编模块连接MASM6.15和VisualC++6.0*7.1嵌入汇编嵌入汇编 =内嵌汇编=内联汇编=行内(in-line)汇编直接在C和C++语言的源程序中插入汇编语言指令使用“__asm”关键字指示嵌入汇编//__asm程序段 __asm { moveax,01h //支持汇编语言的注释格式 movdx,0xD007 ;0xD007=0D007H outdx,eax ;OUT是输出指令 }*1.嵌入汇编语句中使用汇编语言的注意事项1)VisualC++6.0支持通用整数和浮点指令集,以及MMX指令集的嵌入汇编2)嵌入汇编可以使用MASM的表达式和的注释风格3)嵌入汇编可以使用C++的数据类型和数据对象,但不可以使用MASM的绝大多数伪指令和宏汇编方法4)在用嵌入汇编书写的函数中,不必保存EAX、EBX、ECX、EDX、ESI和EDI寄存器;但必须保存函数中使用的其他寄存器(如DS、SS、ESP、EBP和整数标志寄存器) 嵌入汇编引用段时应该通过寄存器而不是通过段名;段超越时,必须清晰地用段寄存器说明*2.嵌入汇编语句中使用C++语言的注意事项1)嵌入汇编可使用C++的下列元素:符号、常量、宏和预处理指令、注释、类型名及结构、联合的成员2)嵌入汇编可使用汇编语言或C++格式表示整数常量3)嵌入汇编不能使用C++的专用操作符,对两种语言都有的操作符在汇编语句中作为汇编语言操作符4)嵌入汇编可以引用包含该__asm作用范围内的任何符号5)利用C、C++的宏可以将汇编语言代码插入源程序中6)嵌入汇编中的标号和C++的标号相似(作用范围为定义它的函数中有效),汇编转移指令和C++的goto语句都可以跳转到__asm块内或块外的标号*〔例7-1〕嵌入汇编计算数组平均值函数-1#includeiostream.h#defineCOUNT10longmean(longd[],longnum);intmain(){longarray[COUNT]={675,354,-34,198,267,0,9,2371,-67,4257};coutThemeanis\tmean(array,COUNT)endl;return0;}*〔例7-1〕嵌入汇编计算数组平均值函数-2longmean(longd[],longnum){longtemp; //定义局部变量,用于返回值__asm{ //嵌入式汇编代码部分 movebx,d ;EBX=数组地址 movecx,num ;ECX=数据个数 ……mean1: addeax,[ebx+edx*4] ;求和 …… jbmean1 ;循环 …… movtemp,eax}return(temp);}嵌入的汇编代码*7.2模块连接各种语言的程序分别编写利用各自的开发环境编译形成OBJ模块文件将它们连接在一起,生成可执行文件模块连接与嵌入汇编的比较VisualC+

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档