试论汇编语言与C语言的混合程序设计技术
2015-03-26营口理工学院李洪刚
营口理工学院 李洪刚
试论汇编语言与C语言的混合程序设计技术
营口理工学院 李洪刚
汇编语言与C语言分别是计算机编程过程中两种不同类型的语言,既可单独用于单独编程,亦可混合使用,而在实际的软件开发设计过程中,为最大程度提高工作效率,拓展软件性能以及维护其性能的稳定性,往往混合采用两种不同的语言。本文主要就汇编语言与C语言的混合程序设计技术进行探索研究,并分别从C语言调用混编语言子程序等方面进行分析,以期为提高计算机程序的运行效率提供相应的理论参考和支持。
汇编语言;C语言;混合;程序设计
C语言是目前计算机高级编程过程中应用最为广泛的语言的之一,与其它编程语言相比,其具有良好的功能性以及灵活性等方面的特点;与C语言相比,汇编语言具有运算速度快等方面的特点,在软件开发或者是程序设计过程中,通过使用汇编语言则可以通过提高储存器的运算速度来有效提升其储存空间。将C语言和汇编语言有机结合在一起,则可以充分利用两者的优势,从而实现高质量、高效率的任务设计目的。
1 汇编语言与C语言的混合编程方法分析
在软件开发或者是程序设计过程中,对汇编语言与C语言进行混合编程作业的过程中,主要可以分为以下三种类型:
1.1 C语言调用汇编语言子程序
在计算机软件开发设计或者是程序编程过程中,若采用C语言进行编程所调用的汇编语言指令较多,则可以在C语言编程过程中直接调用汇编语言子程序的格式,以提高编程工作效率,但在采用C语言进行编程的过程中,其所采用的C语言编译系统往往是有固定的、约束成型的段组合。这就意味着,在C语言编程过程中调用汇编语言子程序时,要确保汇编语言子程序要遵守并符合C语言编译系统所要求的段组合顺序及相关约定,具体表现如下:一是在汇编语言的子程序内要按照约定或者是相关规定采用“EXTERN”对函数显示进行相关说明,并在此基础上将其作为连接C语言及汇编语言子程序的接口;此外,在此过程中要注意下事项,即在函数名字的设置过程中,要确保其在8个字符以内,并选用下划线格式;
二是在汇编语言子程序内部参数顺序的设置过程中,要根据其原有的标准顺序作反向顺序;之后,再讲参数依次嵌入栈中,也即指,在参数设置中,要将原有标准参数顺序中的最后一个参数首先压入栈中,且地址最高,并以此类推;
三是对汇编语言子程序内的代码段要加以说明,并以“-TEXT”为命名原则,对子程序内的加代码段进行命名;此外,在对汇编语言子程序过程进行选择和确定的过程中,要严格以C程序的模式为依据,也即为,C语言程序的小模式对应汇编语言子程序的近过程,而大模式则对应远过程;
四是在汇编语言子程序参数确定的过程中,一般选用C语言程序的参数作为汇编程度的参数,但要注意的是,当汇编语言子程序远过程返回地址时,其一般需要占据4个字符,而BP的压入则需要占用2个字符,因此,在确定汇编语言子程序远过程参数的过程中,其首个参数的位置要选择在BP+6指向的单元;同理,汇编语言子程序近过程参数的选择需要确定在BP+4指向的单元;
五是汇编语言程序在运行或者是使用的过程中需要兼顾保护寄存器,而C语言程序在调用汇编语言子程序的过程中会使得寄存器的数量在2个以上,其中的多余部分则自动转入栈中进行储存,因此,在调用汇编语言子程序的过程中,汇编过程必须要遵循相应的格式,以满足程序运行需求。
1.2 汇编语言调用C语言子程序
汇编语言在计算机硬件方面加强的控制作用力等方面优势使得在计算机开发设计以及编程过程中,汇编语言可以实现对C语言子程序的调用,以有效利用C语言程序在编程中所具有的优势,但要注意的是,在调用C语言子程序的过程中,并不需要改变汇编语言程序的格式,而是要确保其子程序及主程序格式的一致性,并分别在主、子程序开始运行前加上“EXTREN”函数名,以作为汇编语言程序调用C语言子程序的外部函数,在此基础上,则可以通过汇编语言程序主过程中的CALL语句对C语言子程序进行调用,以实现较高的工作效率。
1.3 C语言程序嵌入汇编语言程序中
C语言程序嵌入汇编语言程序中主要存在有两种嵌入方式,并分别应用在不同的编程情况下,具体表现为:一是C语言程序调用汇编语言子程序模块的嵌入方式,在该种嵌入方式中要谨遵以下模块划分原则,以实现两者的合理搭配:为达成软件开发设计或者是编程设计任务需求,在选用该种嵌入方式的过程中,每个模块的体现形式均应该表现为函数或者是过程,并在此基础上选择相应的编写语言进行程序编写;要注意的是,若在编程过程中,主程序选择C语言进行编写或者是含有部分C语言,而模块选择汇编语言进行程序编写,则需要在编写时充分利用C语言程序调用汇编语言子程序进行子模块汇编,并在此基础上,根据主程序以及模块各自的特点形成特定的目标代码模块,再将不同的目标代码模块相连接,最终形成相应的可执行文件,实现C语言程序对汇编语言子程序模块的有效调用;
二是在C语言程序中嵌入汇编指令,该种嵌入方式主要适用在C语言程序无法实现对硬件的有效控制过程中,如调整寄存器的值或者是某种功能的重复性使用等,都可通过在C语言编程过程中嵌入汇编指令实现;在此过程中要注意的是,寄存器的命名以及MASM.EXE程序的拷贝等,要储存在特定的目录下,以便于进行编译。
2 汇编语言与C语言连接应注意的关键性问题
在汇编语言和C语言混合程序的设计过程中,为保障编程质量,要注意C语言与汇编语言连接的参数传递、调用关系确定以及C语言与汇编语言程序间的模块连接三方面的关键性问题,以有效弥补两种语言在编程过程中存在的不足之处,具体表现如下:
2.1 参数的传递
在汇编语言以及C语言回合程序的设计过程中,在参数传递方面,往往采用堆栈进行参数传递,具体是指,在C语言的汇编过程中,通常将BP基址作为原来数据的储存器,而其汇编参数则储存在堆栈成的储存器中,并通过在BP基址上加入不同的偏移量来实现对参数的有效使用,完成参数的传递任务。
2.2 调用关系的确定
调用关系的确定是有效保障汇编语言与C语言混合程序设计质量的重要基础。因此,在汇编语言及C语言混合程序的设计过程中,首先要明确两者之间的调用关系,具体包括:一是在C语言或者是汇编语言程序函数或者是过程调用之前,首先要进行相应的说明,并建立起恰当的调用关系,详细说明调用程序或者是函数的外部类型及引用的外部模块等方面内容;二是要依据储存模式确定相应的汇编语言格式,如大模式C语言程序对应汇编语言程序的远类型过程等。
2.3 C语言程序及汇编语言程序的模块连接
为保证C语言程序与汇编语言程序模块连接的正确性和有效性,在进行连接的过程中,要满足以下两方面要求:一是汇编语言程序模块与C语言程序模块储存方式的一致性,且在命名的过程中,汇编语言程序模块必须服从C语言程序模块兼容的命名约定;二是在C语言的编译过程中,其变量及函数名称下方都要添加相应的下划线,以保障连接质量。
3 结语
综合上述可知,在软件开发设计或者是计算机编程过程中,为提高软件性能以及编程效率可以将汇编语言与C语言有效结合起来进行混合编程,以实现两种语言的优势互补。因此,在进行计算机编程或者是软件开发设计时,要注重汇编语言与C语言的混合使用,以有效实现两种语言程序的参数传递以及数据共享等,大大提高软件开发效率,提高软件开发与编程的安全实用性。
[1]杨波.探究汇编语言与C语言的混合程序设计技术[J].电子技术与软件工程,2015(16).
[2]印德彬. 汇编语言与C语言的混合程序设计技术[J].电子技术与软件工程.,2015(02).
[3]康晶晶.汇编语言与C语言的混合程序设计技术[J].计算机时代,2013(06).
[4]陈久娅.C语言与汇编语言的混合程序设计技术研究[J].电子制作,2013,(04).
李洪刚(1973—),男,大学本科,营口理工学院高级教师,研究方向:数学与计算机科学。