C语言与汇编语言混合编程技术研究

来源 :科技致富向导 | 被引量 : 0次 | 上传用户:studied1234
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
   【摘 要】虽然C语言可以完成许多由汇编语言完成的工作,人们说它是一种介于高级语言与低级语言之间的一种中级语言,但在实际应用中,为了完成某种特定的功能,或需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,这时就会使用到汇编语言程序,即要采用C语言与汇编语言的混合编程技术实现。汇编语言开发的程序代码短、执行速度快,而C语言是应用广泛的面向过程的开发语言。通过给出混合编程的方法、约定规则以及实现的具体步骤,说明了混合编程需要注意的问题,最后给出了相应的实例。
   【关键词】C语言;汇编语言;混合编程;方法
   1.C语言的概念
  C语言是在当今软件开发领域中应用十分广泛的一种高级程序设计语言,具有数据类型丰富、表达能力强、效率高、可移植性好且使用灵活方便等优点。既具有高级语言程序设计的特点,又具有汇编语言的功能[1]Ⅶ。在实际应用中,为了完成某种特定的功能、或者需要缩短程序的运行。
  在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。
   2.汇编语言的概念
  汇编语言是一种符号语言,它与机器密切相关,是面向机器的语言,从而有代码短,占用的存储空间小,运行速度快,直接控制硬件等优点,所以它的运行速度是高级语言所不能比拟的。但用汇编语言开发程序,编程工作量大,开发周期长,容易出错且不易调试。
  汇编语言属低级语言,而C语言是高级语言,所谓高级语言就是更容易被人们理解的语言,其实汇编语言能实现的功能往往也能通过C语言来实现,甚至用C语言会更简单,但是汇编语言有一个优势是其他任何语言所不具备的,这也是为什么汇编语言一直能在编程中占有一席之地,那就是汇编语言对硬件的直接控制,也就是说他能直接对硬件操作,可以绕过操作系统等等之类。虽然有的领域其他编程也能实现,但是在很多地方往往是汇编语言能更加简单,更加完美的完成。而且学好了汇编语言你就能对cpu是怎么工作的有了清晰的认识,所以学计算机专业的一般都会学汇编语言。
   3.混合编程的一般方法
  对于LF240xA的混合编程一般有3种方法:一、对C语言程序编译后形成的汇编程序进行手工修改与优化;二、在C语言程序中直接嵌人汇编语句;三、分别编写C语言程序和汇编语言程序,然后独立编译成目标代码模块,再进行链接。第一种编程方式要求对汇编与C语言都极其熟悉,并且这样的编程方式对程序的可读性和扩展性的负面影响比较大,一般不建议使用。第二种方法适用于语句执行频率非常高,并且C编程与汇编编程效率差异较大的情况,例如进入中断的通用中断子程序等。第三种方式是混合编程最常用的方式之一,在这种方式下,C语言程序与汇编语言程序均可使用另一方定义的函数与变量。下面着重介绍后两种方法。
  3.1C语言程序中嵌入汇编语言
  C语言程序支持asm指令,所以可以利用这条指令直接将汇编语句嵌入到C语言程序中。LF240xA中一些C语言无法操作的控制位,可以采用这种方式来实现。这种方法只需在汇编语句两边加上双引号并用小括号括起来,前面再加上asm关键字,即“asm(“汇编语句”);”。需要注意的是,汇编语句不能紧挨着前一个双引号,它们之间必须用空格、Tab或标号开头。例如,在汇编语言中开中断指令SETC INTM,嵌入到C语言中为“asm(“SETCINTM”);”。这种方式虽然操作简单,但是汇编代码很有可能破坏原来的C语言环境,从而导致不可预料的结果。因此只提倡在程序开始的系统初始化部分少量使用,而在C语言中嵌入实现某一完整功能的多句匯编语言时,不提倡采用这种方式。
  3.2 C语言与汇编语言程序相互调用
  3.2.1 C语言程序调用汇编函数
  C语言程序中调用的汇编函数,在汇编语言中其名称以程序标号的形式出现。程序标号作为操作数用.global进行定义,在前面加下划线“_”。汇编函数也可以利用累加器给C语言程序传递返回值。
  LF240xA有8个辅助寄存器(AR0~AR7)可供使用,在C语言环境中这些寄存器都有明确的分
  3.2.2汇编语言程序调用C函数
  汇编语言程序中调用C函数。被调用的C函数在C语言环境中需要用extern进行定义,在汇编程序中用.ref说明为外部标号,且函数名加“_”。在调用C函数之前应手工编程将参数以逆序写入当前运行任务所使用的任务堆栈中,压栈之前堆栈指针可不作调整。被调用的C函数即可正常访问调用者传递的参数,函数调用完毕后需要调整堆栈指针,清除函数调用中参数所占用的堆栈空间。C函数的返回值可以通过访问累加器获得。具体例子如下。
  3.3注意事项
  3.3.1中断的处理
  LF240xA发生中断时,程序指针(PC)就指向相应的中断向量,并通过中断向量映射到相应的中断服务子程序。例如,在0004h~0005h处是INT2的中断向量,在此存储了1条跳转指令,跳转至INT2的服务子程序。LF240xA的C语言有interrupt修饰符可以用来定义中断服务子程序,
  3.3.2字母大小写
  在C语言环境中,对于字母大小写的区分是很严格的,因此在混合编程的过程中也应该严格遵守这一点。例如,在写命令文件时,误将“.data”写成“.daTA”,此时系统将无法给初始化代码分配存储空间,导致程序无法执行。
  3.3.3 C语言库函数应用
  TI的C编译器中内置了很多函数,包含在rts2xx.1ib的函数库中。库函数并不是C语言的一部分,它是由人们根据需要编制并提供给用户直接使用的。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目、函数名及函数功能是不完全相同的。要使用库函数,只需在源文件中添加语句“#include”函数名.h””,就可使用相应的库函数了。
   4.Turbo C程序中内嵌汇编指令行
  嵌入方法。可在C程序中直接嵌入汇编指令,它就好像C程序的语句一样,当C语言程序中想直接控制硬件或加快运行速度,但可用较短的汇编程序实现时,可采用这种方法,它实现的方法是:
  (1)在嵌入汇编指令前, 必须用关键字asm说明。
  (2)内嵌式汇编指令中的操作数。
  (3)汇编指令操作数也可以是结构数据。
   5.C语言与汇编语言混合编程的方法
  通常地把组合两种或两种以上程序设计语言,通过向互调用、参数传递、共享数据结构和数据信息而形成程序的过程叫做混合编程。混合编程中的光关键问题是建立不同语言之间的接口,C语言和汇编语言混合编程可分为C程序内嵌汇编指令、C程序调用汇编语言子程序和汇编语言调用C函数三种方法。
   6.C语言与汇编语言混合编程的约定规则
  (1)命名约定。
  (2)声明约定。
  (3)寄存器使用约定。
  (4)储存模式约定。
  (5)参数传递约定。
   7.结束语
  C语言与汇编语言的混合编程同时具有了两种语言的优点,彼此相当互调用,进行参数传递,是一种有效的程序设计方法,这种(下转第25页)(上接第32页)方法可以发挥各自的优势和特点,充分利用现有的多种实用程序、库程序等使软件的开发效率大大提高,开发周期大大缩短,在工业控制和科学技算中具有很强的实用性。只要多实践,多积累,可避免各种错误,真正掌握C语言与汇编语言的混合编程技术。■
  
  【参考文献】
  [1]翟乃强,隋树林,汇编语言与C语言及Visual C++混合编程[J].青岛科技大学学报,2003,24(B09):136~138.
  [2]钱晓捷,汇编语言程序设计(第二版)[M],电子工业出版社,2003.6.
  [3]钱春英,浅谈C语言与汇编语言混合编程的一些技术[J].南通航运职业技术学院学报,2005,4(1):50~52,55.
  [4]郭晓梅,汇编语言与C语言的混合编程及应用[J].南京农专学报,2002,18(4):49~52,62.
其他文献
【摘 要】本文结合百货商场的建筑特点和火灾特点,阐述了该场所发生火灾后的扑救对策。   【关键词】百货商场;火灾;特点;扑救对策   近年来百货商场火灾屡有发生。一旦发生火灾,不仅烧毁大量商品,建筑物要受到大火破坏,还会造成大量人员伤亡。我国发生的特大火灾事故,百货商场火灾占有相当比例。如唐山林西百货大楼火灾,造成81人死亡,54人受伤,财产损失达400多万元。百货商场火灾损失大、影响广,扑救
【摘 要】汽轮机是一种以蒸汽为动力,并将蒸气的热能转化为机械功的旋转机械,是现代火力发电厂中应用最广泛的原动机。汽轮机具有单机功率大、效率高、寿命长等优点,但是在使用过程中也经常遇到故障。本文就火电厂汽轮机的常见故障及维护谈几点粗浅认识。  【关键词】火电厂;汽轮机;常见故障;日常维护   0.前言  汽轮机是一种以蒸汽为动力,并将蒸气的热能转化为机械功的旋转机械,是现代火力发电厂中应用最广泛的
【摘 要】由于社会的发展,电力安全对人们生活越来越重要。本文就论述我国电力管理上的缺陷、电力安全规范过程的执行控制,来思考对电力安全工作规范执行过程控制的思考。  【关键词】电力安全;执行过程;规范  伴随着社会的发展,电力对社会的影响力日益加深,随之而来的电力安全为全社会所关注。因为电力行业是一个技术密集型产业,电力生产到传输电力的环节,再到千家万户的用电,中间一个环节出问题将会影响到社会混乱和
【摘 要】对被喻为城市“眼睛”的城市路灯安装问题的几个方面的思考,路灯安装不仅考虑照明问题,还与城市的文化与形象有着重要联系,我们在路灯安装问题上一定要综合考虑各个方面的因素,顺应城市化发展的需要。  【关键词】城市路灯;节能;路灯安装   0.引言  城市路灯是城市基础设施中非常重要的一部分,其在城市的市容风貌、居民生活、社会治安和交通安全中都扮演着十分重要的角色,其对城市的贡献具有不可替代的
以高速公路通过膨胀土地区的边坡为例,介绍膨胀土地区高等级公路边坡排水和防护设计,边坡(路堤、路堑)的排水和防护设计及做法,根据不同的土质情况,采用的排水和防护设计的效
【摘 要】饮用水消毒过程中产生的无机消毒副产物的危害,已逐渐成为人们普遍关注的问题。为安全控制消毒剂的投加量和剩余量,必须及时、准确地检测消毒副产物在水中的含量,以便及时调整消毒剂的用量。离子色谱法在对无机阴离子的分离分析上具有快速、灵敏、准确、选择性好,能同时分析多种离子的特点。由于二氧化氯的用量少,水中的消毒副产物的浓度通常都比较低,因此采用离子色谱法检测水中的微量组分。本实验介绍了离子色谱法
应急照明根据《建筑照明设计标准》GB50034-2004的分类,主要分为三类,(1)正常照明因故障熄灭后,需要确保正常工作或活动继续进行的场所,应设置备用照明;(2)正常照明因故障熄灭后,需确保处于潜在危险之中的人员安全的场所,应设置安全照明;(3)正常照明因故障熄灭后,需确保人员安全疏散的出口和通道,应设置疏散照明。根据《民用建筑电气设计规范》JGJ16-2008第13.8章节中有关火灾应急照明
【摘 要】城市总体规划的科学与否,在很大程度上影响着城市土地价格。同时在城市规划上要注重地质灾害的因素,我国是地质灾害多发的国家,地质灾害种类多、分布广、活动频繁、危害重,是世界上地质灾害最为严重的国家之一。从多年的实践中了解到,对于地质灾害的防治必须要以防为主,治为辅的方针,不断提高对地质灾害的评估和对症下药的作用。  【关键词】城市划规;目标;地价;地质   1.城市规划的目标  由于社会快
【摘 要】从不锈钢冷轧退火工艺开始,介绍了不锈钢冷轧连续退火炉设备圆盘辊的结构优点和生产注意事项。  【关键词】圆盘辊;换辊;退火炉   0.概述  由于不锈钢产品用户的个性化要求也越来越多,生产工艺趋向多样化。连退机组生产难度加大,控制精度要求高,在生产过程中需频繁换辊,给生产带来很大不便。圆盘辊装置就很好的解决了这个问题。   1.不锈钢退火炉的工作原理  随着不锈钢连续退火工艺技术的不断
【摘 要】招投标制度作为工程承包发包的主要形式在国际国内的工程项目建设中已广泛实施,它是一种富有竞争性的采购方式,是市场经济的重要调节手段。但是各施工企业或其代理人为了获取承包合同采用了许多不正当的竞争手段,违法违规现象时有发生。本文列举了工程招投标中存在的一些问题及解决办法。  【关键词】工程招投标;问题;解决对策   1.工程招投标中常见的问题  1.1肢解工程,化整为零  将依法必须招标的