- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章linu操作系统编程实验课件
第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 嵌入式汇编定义:在C语言源程序中直接插入汇编指令。 嵌入式汇编特点:汇编语言指令可以直接访问C语言中的变 量、常量和函数。 9.1.1 嵌入式汇编程序中汇编指令格式 1.VC++6.0环境下嵌入式汇编程序中汇编指令格式 格式1: __asm 操作码 操作数 ;/换行符 格式2: __asm { 汇编指令 } 第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 9.1.1 嵌入式汇编程序中汇编指令格式 2.Turbo C 环境下嵌入式汇编程序中汇编指令格式 格式: asm 操作码 操作数 ;/换行符 第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 9.1.2 嵌入式汇编程序设计 C语言编译系统一般都提供嵌入式汇编功能, 如:Turbo C 、VC++等。 不同的C语言编译系统对嵌入式汇编的约定是有一些区别的。 嵌入式汇编指令使用起来较为灵活,除了可以使用汇编语言 中合法的操作数之外(如立即数和寄存器),嵌入式汇编还 可以使用C中的常量、变量、标号、函数参数、函数等。 第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 9.1.2 嵌入式汇编程序设计 不是所有的汇编语言指令都可嵌入到C语言中,汇编语言的 一般指令、串指令和跳转指令都可以嵌入到C程序中,其他 指令是否能嵌入到C语言中要根据不同的编译系统来定。 第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 9.1.2 嵌入式汇编程序设计 嵌入式汇编最大的优点: 就是不需要程序员去考虑汇编与C间的编程接口,如调用协 议、存储模式等,只是在C的源程序中嵌入汇编程序行, VC++、Turbo C等编译程序会自动要求TASM帮助处理这些汇 编程序行。 第9章 C语言和汇编语言混合编程 9.1 嵌入式汇编 9.1.3 编译链接的方法 嵌入式汇编程序编译时需C语言和汇编语言两种编译系 统共存才能正确进行。 对于VC++: MASM.EXE已融合于其中,因此通过Project菜单创建一个工 程文件(Win32 Console Application),然后将含嵌入式 汇编的程序添加到该工程中去。通过菜单选项直接编译、链 接、运行即可。 对于Turbo C++3.0: 用TCC命令行方式实现编译链接,命令如下:TCC 文件名 第9章 C语言和汇编语言混合编程 9.2 C语言调用汇编模块 模块连接方式: 是程序设计语言之间混合编程经常使用的方法,各种语言分 别编写独立的程序模块,分别产生目标代码 .OBJ文件,然 后进行连接,形成一个完整的程序,这种混合编程方法的好 处是灵活、功能强,但为了保证连接后不出现问题,两种语 言分别编写独立的程序模块时,要遵循符合两种语言调用的 约定,包含形式说明、变量的相互传送、参数和返回值的正 确使用等。 第9章 C语言和汇编语言混合编程 9.2 C语言调用汇编模块 9.2.1 C语言调用汇编模块编程规则 1.Turbo C环境下模块调用规则 ⑴ C程序调用汇编过程时,调用程序和被调用的汇编过程必 须使用相同的存储模型。 如果C语言程序以小型或者紧凑型存储模式编译,则被C调 用的汇编语言过程用near说明。 如果C语言程序以巨型、大型或者中型存储模式编译, 则 被C语言程序调用的汇编语言过程用far说明。 一般情况下进行混合编程时采用小模式。 第9章 C语言和汇编语言混合编程 9.2 C语言调用汇编模块 9.2.1 C语言调用汇编模块编程规则 1.Turbo C环境下模块调用规则 ⑵ 过程名和变量名规范 ① 汇编子程序的过程名和变量名都应说明为public且过程 名和变量名前加下划线 C程序调用汇编模块时,由于C编译程序编译时总是自动地在 所定义的函数和变量名前再加一个下划线,为与C语言命名 约定相符,在编写和定义汇编语言子过程时,过程名及变量 名应以下划线开头且用public说明,如:public _name (name前加单下划线)。 另外,过程名的长度应与C语言 要求的一致。 第9章 C语言和汇编语言混合编程 9.2 C语言调用汇编模块 9.2.1 C语言调用汇编模块编程规则 1.Turbo C环境下模块调用规则 ⑵ 过程名和变量名规范 ② 在C中应将在本程序中用到的汇编子程序的过程名和变量 名说明为外部过程和变量,并且不能在名字前加下划线 如:extern “C” int name(int x,int y)。 C的说明形式: extern “C” 变量类型 变量名; extern “C”返回值类型 过程名(参数类型表); 第9章 C语言和汇编语言混合编程 9.2 C语言调用汇编模块
文档评论(0)