- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 汇编语言与高级语言接口 7.1混合编程 7.2 C/C++的嵌入式汇编 7.2.1在C/C++程序中嵌入汇编语句 7.2.2在嵌入式汇编中访问C/C++的数据 7.2.3汇编语言程序段编写C函数 7.2.4汇编程序调用C/C++函数 7.3 用C/C++调用汇编 7.3.1接口 7.3.2调用汇编模块 7.1 混合编程 一般说来高级语言具有丰富的数据结构、种类繁多的运算符、丰富的函数、易读易写、可移植性好等特点,但用高级语言编写的程序,代码较长,占有存储空间大,运行速度慢。 而用汇编语言编写的程序所占内存空间小,执行速度快,有直接控制硬件的能力,但程序繁琐,难读也难编写,且必须熟悉计算机的内部结构及其有关硬件知识。 7.1 混合编程 混合编程即由高级语言来调用或嵌入汇编语言子程序,或用汇编语言调用或嵌入高级语言子程序。 汇编程序常以过程的形式同高级语言(如C/C++、Basic、Pascal、Delphi等)一起使用。 在与高级语言接口时,汇编器使用两种调用协议用于C/C++语言的C/C++调用协议和用于Basic、Pascal和Fortran语言的Pascal语言调用协议。调用协议语言在MODEL语句中或与PROC语句相联系的OPTION指示符中指定。除了用这些语句以外还可以用完全段定义指定。 7.1 混合编程 高级语言和汇编语言连接很容易,因为在高级语言编译后生成的编译程序是一个.OBJ的文件,这与汇编程序输出的目标文件一样都是机器语言程序。那么我们就可以利用link将高级语言程序产生的.OBJ程序与汇编程序产生的.OBJ程序连接起来,形成一个.EXE的可执行文件。 7.1 混合编程 高级语言与汇编语言的连接应注意下面几个问题: 1.两种语言之间的控制传输问题 一般来说汇编语言程序作为高级语言的外部子程序,由高级语言通过函数或者过程进行调用汇编语言程序。 2.参数的传递 通常高级语言程序使用系统堆栈向汇编语言传递入口参数,汇编语言程序返回时使用CPU内部寄存器带回计算结果。此外还需要确定哪些寄存器是需要保留下来的,哪些是可以使用的。 7.1 混合编程 3.存储分配问题 高级语言不需要考虑存储分配问题,编译程序和连接程序会自动的进行存储分配。当汇编语言与高级语言程序连接时,就需要考虑这个问题了。这个问题处理起来不是很复杂,一般是将汇编语言作为一个程序模块,由连接程序决定其在存储器中的位置。 不同的高级语言与汇编语言的混合编程所采用的方法是不相同的。本章当中主要介绍C/C++与汇编的混合编程问题,在下面的几节当中,我们将分别介绍C/C++的嵌入式汇编、C/C++调用汇编的具体方法。 7.2 C/C++的嵌入式汇编 7.2.1在C/C++程序中嵌入汇编语句 7.2.2在嵌入式汇编中访问C/C++的数据 7.2.3汇编语言程序段编写C函数 7.2.4汇编程序调用C/C++函数 7.2 C/C++的嵌入式汇编 利用汇编语言程序设计的一种非常常见的方式是在高级语言(例如C/C++)程序内编写汇编函数。完成这一工作有几种不同的方式把汇编语言函数直接放到C/C++语言程序内。这种技术称为嵌入式汇编或内联汇编(Inline Assembly)。 7.2 C/C++的嵌入式汇编 在C/C++与汇编语言的混合编程过程中,C/C++调用汇编代码常有两种方法: (一)直接在C/C++程序中嵌入汇编语句 (二)C/C++调用汇编语言子程序 把汇编语言程序加入到C/C++程序中,必须使汇编程序和C/C++程序一样具有明确的边界、参数、返回值和局部变量,必须为汇编语言编写的程序段指定段名并进行定义,如果要在它们之间传递参数,则必须保证汇编程序用来传递参数的存储区和C/C++函数使用的存储区是一样的。 7.2 C/C++的嵌入式汇编 在C/C++程序中采用“_ASM”关键字输入汇编语言指令语句或语句段。在C或者C++中进行嵌入式汇编需要注意以下要点: (1)嵌入式汇编语言代码支持INTEL 80x86 CPU的全部32位指令系统,但是不能使用伪指令与宏指令语句,也不能使用结构(STRUCT)和记录(RECORD) (2)嵌入式汇编语言可以使用C++程序中标识符,包括标号、变量、函数名、常量、宏、类型名、结构和联合的成员以及类对象的公有(PUBLIC)成员变量等; 7.2 C/C++的嵌入式汇编 (3)嵌入式汇编语言代码中可以使用汇编语言格式的常数(131AH),也可以使用C++格式的常数(0X131A) (4)嵌入式汇编语言不能使用C++语言的运算符 (5)嵌入式汇编语言代码中的转移指令和C++中的GOTO语句都能跳转到汇编语言或者C++定义的标号 (6)嵌入式汇编语言定义的函数返回值的传递方法与预
您可能关注的文档
最近下载
- 青少年人际关系与心理健康.docx VIP
- 平高集团GW4-126VI高压交流隔离开关安装使用说明书.docx VIP
- 三级养老护理员国家职业技能培训模块一项目三任务二协助老年人进行雾化吸入.pptx VIP
- 湖南省长沙2025年七年级下学期语文期末试卷含答案.pptx VIP
- 七年级语文秋季开学第一课(统编版2024):“语”你相伴,趣味无穷(快闪+15种趣味游戏).pptx VIP
- 用眼卫生公开课.pptx VIP
- 氪安全技术说明书MSDS.docx VIP
- 英文版我的暑假生活.pptx VIP
- 检验科病例讨论PPT课件.pptx VIP
- 人教版(2024新版)九年级上册化学全册教案教学设计.docx
文档评论(0)