c语言与汇编语言的混合程序设计技术

c语言与汇编语言的混合程序设计技术

ID:23558749

大小:58.50 KB

页数:7页

时间:2018-11-09

c语言与汇编语言的混合程序设计技术_第1页
c语言与汇编语言的混合程序设计技术_第2页
c语言与汇编语言的混合程序设计技术_第3页
c语言与汇编语言的混合程序设计技术_第4页
c语言与汇编语言的混合程序设计技术_第5页
资源描述:

《c语言与汇编语言的混合程序设计技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C语言与汇编语言的混合程序设计技术一般在较大的程序设计当中,如果把汇编语言与高级语言程序结合起来使用,把两种语言的优点都发挥出来,充分利用两种的优势,进行混合编程,则可以很多的难以解决的难题。在程序设计的实践当中,C语言和汇编语言可以相互调用,C语言可以调用汇编语言,汇编语言可以调用C语言,也可以把其中一种语言程序嵌入到另一种程序语言当中。本文就是探讨把C语言与汇编语言两种语言进行混合编程,实现两者的最佳组合,从而解决一些实践难题。关键词:汇编语言;C语言;混合编程 汇编语言的优势就是速度快,占用存储空间不大,而且可以随时控制硬件,这些优点是其它的程序语言无法取代的。汇

2、编语言也有不足之处,就是在高级程序的编写与调试时存在着较大的困难,特别是在处理一些数据或者一些混合运算时显得更加困难。  C语言,它的优势就是在于功能全面,表达形式多样且灵活,开发使用效率很高,具有其它高级语言无法具有的优势。通常在软件开发过程中,大部分程序采用高级语言编写,以提高程序的开发效率;但在要求执行速度快、占用空间少或要求直接控制硬件的场合,则利用汇编语言编写,以提高程序的运行效率。  1.汇编语言和C语言混合编程的方法  C语言和汇编语言混合编程的具体方法有以下几种[2]:  (1)进行混合编程时,一个任务往往被分为若干功能模块,每个模块以函数或子程序的形式

3、存在,根据每一模块的特点选用适合的语言独立编程,然后使用相应的语言编译系统对其进行编译形成目标文件,最后将多个目标文件连接在一起形成一个完整的可执行文件。  (2)在C语言程序中使用汇编程序中定义的变量和常量。  (3)在C语言程序中直接内嵌汇编语句,可以实现C语言无法实现的硬件控制功能。  (4)在C语言程序中使用内部函数直接调用汇编语言语句。  1.1 C语言主程序调用汇编语言子程序  为了能正确地实现C语言程序对汇编语言程序的调用,汇编源程序必须严格按照编译系统要求约定的段顺序和规定的段组合。  1.1.1 汇编语言子程序的一般格式汇编语言子程序的一般格式如下[3

4、]:MYCODESEGMENTPARAPUBLIC'CODE'PUBLIC-函数名;公共符号名说明DGROUPGROUPMYDATA,MYBBSMYDATASEGMENTYDATAENDS    MYBBSSEGMENTYBBSENDS     ASSUME  CS:MYCODE,DS:DGROUP,SS:DGROUP     ...    -函数名PROCNEAR/FAR    PUSHBP    MOVBP,SP    PUSHSI    PUSHDI    ...程序主体语句    POPDI    POPSI    POPBP    RET     -函数名EN

5、DP     ...     MYCODEENDS      END  1.1.2 被调用汇编语言子程序的格式约定对被调用程序的格式与汇编语言程序的一般格式进行比较,可得出如下规律[4]:  (1)由于程序中堆栈段是面向机器的,即C语言程序与汇编语言子程序共用了一个堆栈段,所以需要特别强调的是汇编子程序的开头必须执行以下两条指令:    PUSHBP    MOVEBP,SP  (2)因为C语言程序允许子过程使用SI和DI存放局部变量,只有当变量多于两个时,才需要存储在堆栈中,所以在模式中出现了:PUSHSI和PUSHDI等语句。  (3)对于将被C语言程序调用的过程或

6、子程序,必须用PUBLIC伪操作说明该过程或子程序是供外部调用的,如PUBLIC函数名。  (4)在整个程序中分别定义了代码段MYCODE、初始化数据段MYDATA和非初始化数据段MYBBS,并将MYDATA和MYBBS两段合成为段组DGROUP,同在一个段组中的各段的基址是共享的。  (5)在"程序主体语句"部分一定要有关于函数值的返回语句,也就是说该返回值必须放置在RET语句之前。  (6)被调用过程需要通过RET命令返回。  (7)结束处的END语句只表示程序结束,没有标识启动位置。  1.1.3 C语言主程序中调用的格式约定  为了让C语言主程序能成功调用汇编语

7、言子过程,C程序中要使用关键字"EXTERN"对调用函数做显式说明,将被调用的汇编语言过程说明为外部函数。当外部引用函数无返回值或是INT型时,对它的说明可以缺省。具体格式如下:  EXTERN返回值类型过程名(参数说明)  1.2 汇编语言主程序调用C语言子程序汇编语言的一些优势是C语言所无法比拟的,比如  汇编程序在输入时可以采取各种进制数据以及直接读取数据等,为此,可以用汇编程序作为主程序调用C语言子程序[4]。  汇编语言主程序的格式基本上与汇编程序子程序的一般格式一致,只需在程序开始处加入语句:EXTERN函数名说明这个函数是外

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。