#ch11-汇编语言与高级语言混合程序设计

#ch11-汇编语言与高级语言混合程序设计

ID:13302753

大小:103.50 KB

页数:14页

时间:2018-07-21

#ch11-汇编语言与高级语言混合程序设计_第1页
#ch11-汇编语言与高级语言混合程序设计_第2页
#ch11-汇编语言与高级语言混合程序设计_第3页
#ch11-汇编语言与高级语言混合程序设计_第4页
#ch11-汇编语言与高级语言混合程序设计_第5页
资源描述:

《#ch11-汇编语言与高级语言混合程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、汇编语言与高级语言混合程序设计本章对汇编语言与C语言混合程序进行设计。主要介绍汇编语言和C语言的混合编程和调用方法。7.1.汇编语言和高级语言程序设计语言按照功能的不同可以分为3种:机器语言、汇编语言和高级语言。把机器语言指令以助记符来表示,就成汇编语言指令,汇编语言指令必须用工具软件翻译(汇编过程)成机器语言指令才能执行,其它高级语言也必须翻译(编译或解释)为机器语言才能执行。高级语言是独立于机器的通用语言,不依赖于特定计算机的硬件结构和指令系统。用高级语言写的源程序,可以在不同的计算机上重新编译(或解释)后运行,而

2、得到相同运行结果。高级语言包括C/C++、Basic、Pascal、Java等。C/C++语言是一种应用广泛,并且实现灵活的一种计算机编程语言,用C/C++语言编出来的程序,可以在很多平台上运行,可移植性强。C/C++不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C/C++语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的C/C++语言程序开发环境,如:TurboC/C++、BorlandC/C++等,也都提供了很好的混合编程手段。计算机操作系统等大型软件,一般都采

3、用C/C++语言和汇编语言混合编程来完成。虽然除了C/C++以外的其它高级也可以与汇编语言进行混合编程,但下面我们重点讲述C/C++与汇编语言的混合编程问题。7.2.为什么要混合编程?有时为了提高关键代码的执行效率,可以采用汇编语言来实现低层关键代码的功能,如数据采集、定时、调度等,而用C/C++等高级语言来实现高层如数据处理等功能。通过C/C++与汇编语言之间的相互调用,实现汇编语言和高级语言的混合编程,发挥各自语言的优势14。这种混合编程的方法优点是提高了关键程序段的执行效率,而其缺点是程序移植性变差。在操作系统软

4、件中,如linux,、uC/OSII等就采用了C/C++与汇编语言的混合编程。操作系统中,一般是低层的硬件相关的代码(任务切换调度、硬件中断、定时中断等)都采用汇编语言实现,这部分与具体硬件相关,也叫平台相关的代码;而高层的服务功能采用C/C++语言来实现,这部分与具体硬件无关,也叫平台无关的代码。平台相关的汇编语言代码部分是操作系统移植到不同处理器时需要修改的部分。7.1.如何混合编程?为了实现一个任务,我们把一个任务按功能划分为很多模块,每个模块以函数或子程序的形式存在,根据每个模块的特点选用汇编语言或C/C++语

5、言,我们把它们叫做汇编语言模块或C/C++语言模块。这两种不同语言编写的模块,都会编译成目标文件(.obj),最后将多个目标文件连接在一起,形成一个完整的可执行文件(.exe)。为了完成一个特定任务的多个模块,模块之间不是孤立的。一种情况是,模块中函数之间可能存在着调用关系,也就是,可能存在着汇编语言模块中的函数调用另一个C/C++模块中的函数的情况;也可能存在着C/C++模块中的函数调用汇编语言编写的模块函数的可能。另一种情况是,也可能存在着一个模块引用另一个模块公共变量的情况。为了不同模块之间调用和引用的正确,要对

6、模块之间的调用和引用进行约定。汇编语言与C/C++语言混合编程,需要考虑四个方面的约定(规范):(1)存储模式的约定---如何为模块分配内存的约定;(2)函数名称的约定---如何声明函数名称约定;(3)函数调用约定---汇编语言与C语言之间的参数如何传递的约定;(4)编译方法。有两种混合编程方式,一种是嵌入汇编指令的格式;另一种是独立汇编模块格式。147.1.1存储模式的约定存储模式用于处理程序、数据、堆栈在主存中的分配和存取,决定代码和数据的默认指针类型,例如段寄存器CS、DS、SS、ES的设置就与所采用的存储模式有

7、关。存储模式在C语言中也称为编译模式或主存模式。TurboC提供了六种存储模式,分别是:微型模式(tiny)、小型模式(small)、紧凑模式(compact)、中型模式(medium)、大型模式(large)和巨型模式(huge)。混合编程时必须保持汇编语言和C语言的存储模式一致。在汇编语言中使用伪指令.model***,表示在汇编语言中采用的存储模式,其中***表示上述6种模式中的一种。若C采用小模式,则在汇编语言中要使用.modelsmall。7.1.2函数调用约定要想实现高级语言与汇编语言的混合编程,必须知道这

8、两种语言之间的调用约定。当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用与者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。函数调用时,调用者依次把参数压栈,然后调用函数,函

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

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

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