ch11匯编语言与高级语言溷合程序设计.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch11匯编语言与高级语言溷合程序设计

汇编语言与高级语言混合程序设计 本章对汇编语言与C语言混合程序进行设计。主要介绍汇编语言和C语言的混合编程和调用方法。 汇编语言和高级语言 程序设计语言按照功能的不同可以分为3种:机器语言、汇编语言和高级语言。把机器语言指令以助记符来表示,就成汇编语言指令,汇编语言指令必须用工具软件翻译(汇编过程)成机器语言指令才能执行,其它高级语言也必须翻译(编译或解释)为机器语言才能执行。高级语言是独立于机器的通用语言,不依赖于特定计算机的硬件结构和指令系统。用高级语言写的源程序,可以在不同的计算机上重新编译(或解释)后运行,而得到相同运行结果。高级语言包括C/C++、Basic、Pascal、Java等。 C/C++语言是一种应用广泛,并且实现灵活的一种计算机编程语言,用C/C++语言编出来的程序,可以在很多平台上运行,可移植性强。C/C++不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C/C++语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的C/C++语言程序开发环境,如:Turbo C/C++、Borland C/C++等,也都提供了很好的混合编程手段。 计算机操作系统等大型软件,一般都采用C/C++语言和汇编语言混合编程来完成。虽然除了C/C++以外的其它高级也可以与汇编语言进行混合编程,但下面我们重点讲述C/C++与汇编语言的混合编程问题。 为什么要混合编程? 有时为了提高关键代码的执行效率,可以采用汇编语言来实现低层关键代码的功能,如数据采集、定时、调度等,而用C/C++等高级语言来实现高层如数据处理等功能。通过C/C++与汇编语言之间的相互调用,实现汇编语言和高级语言的混合编程,发挥各自语言的优势。这种混合编程的方法优点是提高了关键程序段的执行效率,而其缺点是程序移植性变差。 在操作系统软件中,如linux,、uC/OS II等就采用了C/C++与汇编语言的混合编程。操作系统中,一般是低层的硬件相关的代码(任务切换调度、硬件中断、定时中断等)都采用汇编语言实现,这部分与具体硬件相关,也叫平台相关的代码;而高层的服务功能采用C/C++语言来实现,这部分与具体硬件无关,也叫平台无关的代码。平台相关的汇编语言代码部分是操作系统移植到不同处理器时需要修改的部分。 如何混合编程? 为了实现一个任务,我们把一个任务按功能划分为很多模块,每个模块以函数或子程序的形式存在,根据每个模块的特点选用汇编语言或C/C++语言,我们把它们叫做汇编语言模块或C/C++语言模块。这两种不同语言编写的模块,都会编译成目标文件(.obj),最后将多个目标文件连接在一起,形成一个完整的可执行文件(.exe)。 为了完成一个特定任务的多个模块,模块之间不是孤立的。一种情况是,模块中函数之间可能存在着调用关系,也就是,可能存在着汇编语言模块中的函数调用另一个C/C++模块中的函数的情况;也可能存在着C/C++模块中的函数调用汇编语言编写的模块函数的可能。另一种情况是,也可能存在着一个模块引用另一个模块公共变量的情况。 为了不同模块之间调用和引用的正确,要对模块之间的调用和引用进行约定。汇编语言与C/C++语言混合编程,需要考虑四个方面的约定(规范): (1)存储模式的约定---如何为模块分配内存的约定; (2)函数名称的约定---如何声明函数名称约定; (3)函数调用约定---汇编语言与C语言之间的参数如何传递的约定; (4)编译方法。 有两种混合编程方式,一种是嵌入汇编指令的格式;另一种是独立汇编模块格式。 存储模式的约定 存储模式用于处理程序、数据、堆栈在主存中的分配和存取,决定代码和数据的默认指针类型,例如段寄存器CS、DS、SS、ES的设置就与所采用的存储模式有关。存储模式在C语言中也称为编译模式或主存模式。 Turbo C提供了六种存储模式,分别是:微型模式(tiny)、小型模式(small)、紧凑模式(compact)、中型模式(medium)、大型模式(large)和巨型模式(huge)。 混合编程时必须保持汇编语言和C语言的存储模式一致。在汇编语言中使用伪指令.model ***,表示在汇编语言中采用的存储模式,其中***表示上述6种模式中的一种。若C采用小模式,则在汇编语言中要使用.model small。 函数调用约定 要想实现高级语言与汇编语言的混合编程,必须知道这两种语言之间的调用约定。 当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用与者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,

您可能关注的文档

文档评论(0)

sd47f8cI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档