信息与电脑China Computer&Communication2017年第11期
汇编语言与C语言的混合程序设计技术
罗 珈
(天津农学院,天津 300384)
摘 要:汇编语言和C语言在软件的开发中都具有很重要的作用,它们各有各的特点,首先,汇编语言是一种面向机器的语言,它有着占用存储空间小、运行速度快并且可以直接控制硬件特点,在数值混合运算和处理中表现突出,但是,它在编写和调试方面却相对比较困难和复杂。其次,C语言有着开发效率高、功能多、运用灵活、表达能力强的优点,如果在开发软件的过程中将二者相结合,便能大大提高运行的效率。笔者结合自身工作的经验,具体探讨了这一混合程序设计技术,希望能为同行提供借鉴。
关键词:汇编语言:C语言;混合程序;程序设计
中图分类号:TP313 文献标识码:A 文章编号:1003-9767(2017)11-090-02
Hybrid Programming Technology of Assembly Language and C Language
Luo Jia
Abstract: The assembly language and C language has a very important role in the development of the software, they each
(Tianjin Agricultural University, Tianjin 300384, China)
have their own characteristics, first of all, the assembly language is a kind of machine oriented language, it has a small storage relatively difficult and complex in processing, writing and debugging. Secondly, C language has the advantages of high efficiency, programming technology, hopes to provide reference for colleagues.
many functions, flexible application and strong expression ability. If we combine the two in the process of developing software, we
Key words: assembly language: C language; hybrid program; program design目前,C语言在编程中起着很重要的作用,也是应用最广泛与有效的一种语言,是在目前的技术条件下,大部分程序设计与软件开发所采用的语言模式,它有着良好的功能性、灵活性以及开发性。而汇编语言在实际的应用中有着不可代替的作用,能有效对硬件发挥很大的作用,但相对而言,如果二者能有效结合起来,从而提高程序设计的时效性和合理性,让各自发挥自已的优点,是值得所有程序员重视的。以下进行详细分析和说明。
用C语言编程的过程中,一般C语言的编程系统是固定的段组合,这就是说,如果使用C语言编程并且调用汇编语言的子程序,那么,汇编语言的子程序必须要与C语言编译系统所用的段组合一致,通俗点来说,就是汇编语言的子程序要符合并遵守C语言的相关规定,主要表现在以下五个方面。
一是汇编语言子程序参数的顺序设置,要依照它原来的
space, faster running speed and can directly control the hardware features, prominent in numerical calculation and mixing but it is can greatly improve the efficiency of operation. The author combines the experience of his own work, specifically discusses the hybrid
标准顺序进行相反顺序的设置,然后再将参数依次嵌入栈中。也就是说,在设置参数时,要把原来有的标准参数顺序里面的最后一个参数先压到栈中,并且地址是最高的,按照顺序往下设置。
二是汇编语言的子程序要先按照相关规定用“EXTERN”对函数显示进行相关说明。以此为基础,然后再将汇编语言的子程序作为连接C语言子程序的接口,另外,还需要注意的是,在设置函数名字时要在八个字符以内,并且要用下划线的格式。
1 汇编语言与C语言的混合编程方法分析
1.1 C语言调用汇编语言子程序
在计算机软件的开发或编程过程中,如果使用C语言,调用的汇编语言指令多,那么就可以直接使用汇编语言子程序的格式,从而达到提高编程工作效率的作用,但是,在利
作者简介:罗珈(1963-),女,天津人,本科,副教授。研究方向:计算机技术与应用。
— 90 —
2017年第11期
信息与电脑China Computer&Communication算法语言
三是在为汇编语言子程序内的代码段命名时,要以“-TEXT”为命名的格式并且还要加以说明。另外,还要以C语言程序的模式为依据选择汇编语言程序的子程序,也就是说,C语言程序的大模式要对应远过程,而小模式要对应汇编语言子程序的近过程。
第四是汇编语言子程序的参数,要选用C语言的参数,需要注意的是,汇编语言子程序远过程返回来时一般要占据四个字符,而BP压入则要占用两个字符。所以,在确定汇编语言子程序远过程参数时,第一个参数的位置要选在BP+6所指的单元。同样的道理,汇编语言子程序近过程选择参数时要确定在BP+4所指的单元。
最后一点就是汇编语言程序在使用时还要保护寄存器,但C语言程序在使用汇编语言子程序时会使用两个以上寄存器,而多余的部分就自动转到栈中进行存储,所以,在调用汇编语言子程序时,汇编的过程必须要按照相对应的格式进行,这样就可以满足程序运行所需。1.2 汇编语言调用C语言子程序
汇编语言在计算机的硬件方面有很强的控制作用,它的这方面的优势使计算机在开发设计和编程时,能够达到汇编语言调用C语言子程序的目的,并且能够很好发挥C语言在编程的过程中本身的优势。值得注意的是,在调用C语言时,不需要改变汇编语言的格式,而是要保证子程序和主程序的统一性,并且汇编语言调用C语言子程序作为外部函数时,还要在主、子程序运行之前加上“EXTREN”函数名,要想提高工作的效率,就要以此为基础,这样就可以通过汇编语言程序主过程中的CALL语句调用C语言子程序。1.3 C语言程序嵌入汇编语言程序中
在不同的编程情况下,C语言程序融入汇编语言程序中有两种方式,具体如下。
(1)C语言程序调用汇编语言子程序模块融入的方式,要想合理搭配二者,就要遵守以下模块划分的原则:为了达到软件开发设计或者是编程设计的任务要求,在选用这种嵌入方式时,应以每个模块体现为函数或是过程为基础来选择相对应的编写语言来编写程序;值得注意的是,如果在编写程序的过程中,主程序选择C语言进行编写或是有一部分选择C语言编写,但模块选择的是汇编语言编写程序,就要在编写程序的过程中充分利用C语言程序调用汇编语言子程序来进行子模块汇编,并还要以此为基础,根据主程序和模块自身的特点形成固定的目标代码模块,然后再将不一样的目标代码模块连接起来,最后形成相对应的可以实行的文件,充分利用这些实现C语言对汇编语言子程序模块的调节作用。
(2)如果C语言程序不能有效控制硬件,就要使用C
语言程序中嵌入汇编语言这个嵌入方法,比如,如果需要调整寄存器的值或是重复性使用一种功能等,使用C语言编程过程中嵌入汇编语言指令这种方法都可以实现,但是在这个过程中需要注意的就是为了方便编译,寄存器的命名以及MASM.EXE程序的拷贝等要存储在指定的目录下。
2 C语言与汇编语言的连接
2.1 参数传递
C语言和汇编语言在互相调用时会出现一个问题,就是参数传递的问题,一般都会采用堆栈来传递,使用汇编语言过程中,将BP作为基址寄存器,要先把来源于C语言的参数压入堆栈,在使用这些参数时,再通过BP用不同的偏移量取存堆栈中的数据。2.2 确定调用关系
要明确调用关系,确立函数或者调用与被调用关系,并且提前给出说明,对于被调用的函数或者过程要先说明外部类型,对引用的外部模块调用程序也要进行说明。另外,在确立汇编语言格式时还应按照存储模式的不同来确立,C语言程序的小模式一般对应的是汇编程序的近类型过程,而C语言程序的大模式一般对应的是汇编程序的远类型过程。2.3 C语言与汇编语句程序的模块连接
汇编语言与C语言模块正确连接要遵循汇编模块与C语言模块的储存方式必须一样和汇编模块必须遵循与C语言模块兼容的命名约定这两个原则。为了保证连接前后的一致性,在编译C源程序时,要在函数名和变量名的前面加上下划线,同时,必须以PUBLIC为定义,目的是让汇编语言标示符在C语言中可以看见。
3 结 语
经过以上的研究和分析可以得知,汇编语言与C语言应用在软件编程的过程中各有优势,只有把汇编语言和C语言有效结合在一起使用,让各自发挥自己的优势,才能有效实现这二者的参数传递和数据共享等,这才能大大提高软件的开发率和编程的安全实用性,所以在以后的计算机编程或软件的开发设计时,要注重二者的有效结合,以提高工作效率。
参考文献
[1]杨波.探究汇编语言与C语言的混合程序设计技术[J].电子技术与软件工程,2015(16).
[2]印德彬.汇编语言与C语言的混合程序设计技术[J].电子技术与软件工程,2015(2).
— 91 —
因篇幅问题不能全部显示,请点此查看更多更全内容