- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]32位汇编语言07
32位汇编语言程序设计 第7章 与Visual C++的混合编程 第7章 与Visual C++的混合编程 7.1 嵌入汇编 7.2 模块连接 7.3 调用高级语言函数 7.4 使用Visual C++开发环境 第7章 与Visual C++的混合编程 掌握嵌入汇编和模块连接进行混合编程方法,理解堆栈帧的作用 熟悉汇编语言调用高级语言函数和开发调试过程 混合编程 软件开发通常采用高级语言,以提高开发效率 某些部分利用汇编语言,以提高程序的运行效率 汇编语言的优点:开发的程序占用存储空间小、运行速度快等 汇编语言的缺点:与机器密切相关、移植性差,编程烦琐、对汇编语言程序员要求较高 混合编程:汇编语言与高级语言、或高级语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程 汇编语言与C和C++语言的混合编程 嵌入汇编 模块连接 7.1 嵌入汇编 嵌入汇编 =内嵌汇编=内联汇编=行内(in-line)汇编 直接在C和C++语言的源程序中插入汇编语言指令 使用“_ _asm”关键字指示嵌入汇编 //_ _asm程序段 _ _asm { mov eax,01h //支持汇编语言的注释格式 mov dx,0xD007 ;0xD007=0D007H out dx,eax ;OUT是输出指令 } 1.嵌入汇编语句中使用汇编语言的注意事项 1)Visual C++ 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 #include iostream.h #define COUNT 10 long mean(long d[], long num); int main() { long array[COUNT] = {675, 354, -34, 198, 267, 0, 9, 2371, -67, 4257}; coutThe mean is \tmean(array,COUNT)endl; return 0; } 〔例7-1〕嵌入汇编计算数组平均值函数-2 long mean(long d[], long num) { long temp; //定义局部变量,用于返回值 _ _asm { //嵌入式汇编代码部分 mov ebx,d ;EBX=数组地址 mov ecx,num ;ECX=数据个数 …… mean1: add eax,[ebx+edx*4] ;求和 …… jb mean1 ;循环 …… mov temp,eax } return(temp); } 7.2 模块连接 各种语言的程序分别编写 利用各自的开发环境编译形成OBJ模块文件 将它们连接在一起,生成可执行文件 模块连接与嵌入汇编的比较 Visual C++直接支持嵌入汇编方式,比模块连接方式更简单方便 嵌入汇编的主要缺点是缺乏可移植性 模块连接方式可以比较方便地为不同处理器平台提供不同的外部目标代码模块 7.2.1 约定规则 1. 采用一致的调用规范 Visual C++的_cdecl调用规范 对应MASM的C语言类型 Visual C++的_stdcall调用规范 对应MASM的STDCALL语言类型 2. 声明共用函数和变量 C++语言程序采用extern “C”{ } MASM利用EXTERN 3. 正确传递入口参数和返回参数 数据类型一致 汇编语言可以使用扩展过程定义PROC伪指令 Visual C++函数从EAX寄存器返回值 〔例7-2〕模块连接计算数组平均值函数-1 #include iostream
您可能关注的文档
- [工学]2009形状记忆合金.ppt
- [工学]2010机械设计总复习.ppt
- [工学]2010数模培训.ppt
- [工学]2011《油藏工程》课件.pdf
- [工学]2009并行计算与多核程序设计01-02多核技术导论.ppt
- [工学]2010第3章高分子的溶液性质jsp.ppt
- [工学]2012年安全生产许可证申报材料 完整版.doc
- [工学]2012年电子技术实验指导书.pdf
- [工学]2012机器学习欧洲暑期学校课件-8共9个.pdf
- [工学]2012第四章 港口水域及防波堤布置.ppt
- DB13_T 1416.1-2011 作业场所职业危害检测规范 第1部分:一般要求.docx
- 中国制造企业绿色供应链管理实践类型及绩效实证研究.pdf
- DB13T2065-2014 种猪场场内生产性能测定技术规程.docx
- DB13_T1305-2010秸秆沼气集中供气系统工程设计、施工及验收规范.docx
- DB13T2631-2017 智慧旅游城市基本设施要求.docx
- DB13T1557-2012 郑单958粮饲兼用玉米栽培技术规程.docx
- DB13T2214-2015 紫椴育苗技术规程.docx
- 基于多Agent协调的供应链管理系统.pdf
- DB13_T 1568-2012 生态公益林经营技术规程.docx
- DB13T2224-2015 中药材种苗质量标准 祁菊.docx
最近下载
- 外研版(2024)Unit 5 Reading课件 2024-2025学年七年级英语上册.pptx VIP
- 糖尿病诊疗指南2024.pptx VIP
- 【新教材】北师大版(2024)七年级上册数学第四章 基本平面图形 综合素质评价测试卷(Word版,含答案).docx
- 2024年在线网课学习课堂《Entrepreneur Growth Plan(辽宁大学 )》单元测试考核答案.pdf
- 公安专业知识 易混易错知识点法律和公专(讲义+笔记)(辅警系统班).pdf
- 核心素养下的大单元教学培训心得(通用).pptx
- 二年级上册美术教案与反思-第6课 下雨了 ▏人美版 .pdf VIP
- 2024年华医网继续教育临床静脉用药质量管理与风险防范答案.docx VIP
- NAD T757 A&V 环绕声接收器用户手册.pdf
- 新能源汽车的品牌推广.pptx
文档评论(0)