摘要: C语言是一种高级的面向过程的开发语言,汇编语言是一种低级的面向机器的编程语言。两者在程序设计开发方面各有优劣,目前两者的混合编程得到了广泛的应用。本文通过具体的实例,说明了混合编程的基本方法,为C语言应用开发人员提供方便。
关键词: C 语言;汇编语言;混合编程
中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)24-0231-02
0 引言
汇编语言是一种面向机器的语言,其优点是运行速度快,占用存储空间小,可直接对硬件进行控制。缺点是编写、调试困难、移植性差。C语言简洁、灵活、库函数丰富、调试方便、移植性好,目前已被广泛地应用于系统软件和应用软件的开发中,为了发挥各自优势,取长补短,采用混合编程。大部分程序,如界面、人机接口(外壳程序)、数据处理等用C语言编写,以提高程序的开发效率。而某些程序,如需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,或频繁使用的程序、或需要占用内存空间少的程序(内核程序),则用汇编编写,以提高程序的运行效率。
1 嵌入式汇编
嵌入式汇编也称行内汇编,源程序中直接插入汇编语句。汇编语句可直接访问C程序中定义的常量、变量、函数。不必考虑二者之间的接口,方便编程。
1.1 嵌入式汇编语句的格式
格式:asm操作码 操作数[;或换行]
其中:操作数可以是汇编语句中的立即数、寄存器、表达式等还可以是C中的常量、变量、标号等。分号;是汇编语句结束符,并非注解,要用注解,用C的注解。如下例
所示。
1.2 汇编语句访问C的数据
嵌入的汇编语句可以访问C语言程序中的任何标识符,包括变量、常量、标号、函数名、寄存器变量、函数参数等。如下例所示。
1.3 汇编语言与C语言接口规则
1.4 编译过程
命令行键入命令:TCC-B-Iinclude-Llib 文件名.c即可. TCC会自动调用TASM.EXE和TLINK.EXE,并且TLINK.EXE能正确的找到需要的.obj和.lib文件,要保证TC目录下存在TASM.EXE文件。如果单步编译,可能会碰到很多的问题,主要是TLINK.EXE不会自己去找.obj和.lib文件。该命令的功能是:.C编译TCC.ASM汇编TASM.OBJ连接TLINK.EXE。
2 Turbo C模块连接方式
C、汇编程序各自编程,各自编译,然后连接在一起。
2.1 汇编语言与C语言接口规则
①命名约定:汇编的名字前加一个下划线,C的名字前不加下划线(编译后内部自动加),以确保两个模块内部名字一致。
3 结语
混合编程,主要涉及接口,汇编调C的函数、全局变量。C调汇编的函数、变量。本文对此做了浅述。
参考文献:
[1]谭浩强.C语言程序设计[M].清华大学出版社,2004.
[2]丁爱萍.C语言程序设计实例教程[M].西安电子科技大学出版社,2006.
[3](美)布鲁姆著,马朝晖译.编语言程序设计[M].北京:机械工业出版社,2006.