浅谈C语言与汇编语言混合编程的一些技术

合集下载

11 C语言与汇编语言的混合编程概述2

11 C语言与汇编语言的混合编程概述2
12
3. 通过固定存储区传递
C51的函数名转换规则、段命名规则及参数传递规则举例。 #include <STC12C5A.h> #define uchar unsigned char uchar func(uchar x,uchar y); //函数func原型声明 void main(void) //主函数 { func(0x12,0x34); //调用函数func while(1); } uchar func(uchar x,uchar y) { return (x/y); }
2
1.C51与汇编语言混合编程概述(续)
单片机程序的编译过程 无论是C语言还是汇编语言,源 程序都要被转换成目标代码 (机器语言),单片机才能识 别。 在单片机混合编程中, C 模块与汇编模块的接口简 单,分别用C51和A51对 源文件进行编译,然后经 连接定位器L51产生可下 载到程序存储器的十六进 制可执行文件。
16
3. 通过固定存储区传递
;} ; SOURCE LINE # 12 ?C0004: RET ;返回 ; END OF _func END ;结束 上面给出了一个C51程序及其编译后的程序清单,可以看出,函数func有2个 char型参数,通过R7,R5传递,所以转换成汇编函数名_func,返回值通过R7 传递回主函数。 如果在前述的DIV.C源文件中使用“#pragma NOREGPARMS”控制命令,禁止寄 存器内参数传递,则所有参数均通过固定的存储区传递。其编译后的汇编输出 文件如下:
南通开放大学
C语言与汇编语言的 混合编程概述
1.C51与汇编语言混合编程概述
在一个应用程序中,根据每个任务的具体特点和要求,用不同的编程语言 编写源程序,最后通过编译/连接器生成一个可执行的完整程序,这种编 程方式称为混合编程。

汇编语言和C语言的混合编程方法分析

汇编语言和C语言的混合编程方法分析
汇编语 言和 C语言 的混合编程方法分析
张丽
( 山西管理 职业学 院,山西 临汾 0 4 1 0 5 1 )

要 :C语 言 虽是高级计算机语言 ,但汇编语言 可以高效率 、高质量地发挥计算机硬 件操作 系统的功能 ,在程序
编 写时将二者有机结合并加以利用,可以事半功倍。
关键词 :汇编语言 ;C语 言;嵌入 ;相互调用 ;程序调 试;混合编程
l 汇编 语言和 C语 言的特 点
1 . 1 汇 编 语 言
汇编语 言是人们 基于初级 计算机语 言 .也就是 二进制 语
2 混合编 程 的注 意事项
2 . 1 注意保护堆栈和寄存器 。以完成参数传 递
汇编语言程 序利用寄存 器来完成 参数信息 的传递 , C语
言的基础 ,将原本 … 0’和 … 1 ’组成 的二进 制字符 串 ,换 用
遇 到 的 问题 l
程 效率 比较 高 ,但 是无法有效 地进行程 序移 植 ,可读 性也较
低。C语言具有丰富 的语言功能 、灵活的表达能力 与较强的可
读 性 ,利 用 C语 言进 行程序 开发 .可 以有效地解决 程序移 植 问题 。单 独使用 c语 言或者 逻辑语 言 ,都有缺憾 .但是可 以 利 用混合 编程 的设 计 ,将二者 有机结 合起来 。充分 发挥逻 辑 语 言和 C语 言各 自的优势 ,保 证程序 的性能完整性 及为后期 的软件维 护带来方便 。
较符合人 类思维 逻辑 的符号来 表达 . 比如 。用 “ A D D ”代 表
加法指令 ,用 “ A D C ”代 表加进位 的加法 指令 .用 “ I N C ”代 表加 1 指令 ,以更 简明的方 式来表达 指令要 求的符 号化计算

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

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

汇编语⾔与C语⾔混合编程技术汇编语⾔与C语⾔混合编程技术 ARM体系结构⽀持ARM的汇编语⾔与C与C++的混合编程。

在⼀个完整的程序设计的中,除了初始化部分⽤汇编语⾔完成外,其⼤部分的编程任务⼀般都⽤C或C++完成。

汇编程序中访问C程序变量1 在汇编的源程序中调⽤C语⾔风格的字符串需要使⽤IMPORT伪操作。

IMPORT相当于C语⾔中的extern关键字,告诉编译器引⽤的符号不是在本⽂件中定义的,⽽是在其他的源⽂件中定义的。

伪操作的格式: IMPORT symbol [,WEAK] symbol是声明的符号的名称; [,WEAK]指⽰编译器如果发现symbol在所有的源⽂件中都没有找到,那么它也不会产⽣任何的错误信息。

⽰例见下页。

汇编程序中访问C程序变量2 C语⾔代码⽂件str.c⾥⾯只有⼀个简单的字符串的定义: char *strhello="Hello world!\n\0"; 汇编代码⽂件hello.s 1 AREA ||.text||, CODE, READONLY 2 main PROC 3 STMFD sp!,{lr} 4 LDR r0,=strtemp 5 LDR r0,[r0] 6 BL _printf 7 LDMFD sp!,{pc} 8 strtemp 9 DCD strhello 10 ENDP 11 EXPORT main 12 IMPORT strhello 13 IMPORT _main 14 IMPORT _main 15 IMPORT _printf 16 IMPORT ||Lib$$Request$$armlib||, WEAK 17 END C程序中内嵌汇编指令1 在ARM的C语⾔程序中可以使⽤关键字__asm来加⼊⼀段汇编语⾔的程序。

格式: __asm { instruction/*comment*/ … } C程序中内嵌汇编指令2 在C语⾔中嵌⼊的ARM汇编需要注意⼀些问题:在汇编指令中,可以使⽤表达式,使⽤逗号“,”作为分隔符 ; 如果⼀条指令占⽤了多⾏,那么应该使⽤符号“\”续⾏,如果⼀⾏中有多个汇编指令,那么应该使⽤“;”将多个指令隔开。

C语言和汇编语言混合编程方法

C语言和汇编语言混合编程方法

C语言和汇编语言混合编程方法作者:庞新法来源:《价值工程》2014年第24期摘要: C语言是一种高级的面向过程的开发语言,汇编语言是一种低级的面向机器的编程语言。

两者在程序设计开发方面各有优劣,目前两者的混合编程得到了广泛的应用。

本文通过具体的实例,说明了混合编程的基本方法,为C语言应用开发人员提供方便。

关键词: C 语言;汇编语言;混合编程中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)24-0231-020 引言汇编语言是一种面向机器的语言,其优点是运行速度快,占用存储空间小,可直接对硬件进行控制。

缺点是编写、调试困难、移植性差。

C语言简洁、灵活、库函数丰富、调试方便、移植性好,目前已被广泛地应用于系统软件和应用软件的开发中,为了发挥各自优势,取长补短,采用混合编程。

大部分程序,如界面、人机接口(外壳程序)、数据处理等用C语言编写,以提高程序的开发效率。

而某些程序,如需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,或频繁使用的程序、或需要占用内存空间少的程序(内核程序),则用汇编编写,以提高程序的运行效率。

1 嵌入式汇编嵌入式汇编也称行内汇编,源程序中直接插入汇编语句。

汇编语句可直接访问C程序中定义的常量、变量、函数。

不必考虑二者之间的接口,方便编程。

1.1 嵌入式汇编语句的格式格式:asm操作码操作数[;或换行]其中:操作数可以是汇编语句中的立即数、寄存器、表达式等还可以是C中的常量、变量、标号等。

分号;是汇编语句结束符,并非注解,要用注解,用C的注解。

如下例所示。

1.2 汇编语句访问C的数据嵌入的汇编语句可以访问C语言程序中的任何标识符,包括变量、常量、标号、函数名、寄存器变量、函数参数等。

如下例所示。

1.3 汇编语言与C语言接口规则1.4 编译过程命令行键入命令:TCC-B-Iinclude-Llib 文件名.c即可. TCC会自动调用TASM.EXE和TLINK.EXE,并且TLINK.EXE能正确的找到需要的.obj和.lib文件,要保证TC目录下存在TASM.EXE文件。

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

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

C语言与汇编语言混合编程技术研究【摘要】虽然C语言可以完成许多由汇编语言完成的工作,人们说它是一种介于高级语言与低级语言之间的一种中级语言,但在实际应用中,为了完成某种特定的功能,或需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,这时就会使用到汇编语言程序,即要采用C语言与汇编语言的混合编程技术实现。

汇编语言开发的程序代码短、执行速度快,而C 语言是应用广泛的面向过程的开发语言。

通过给出混合编程的方法、约定规则以及实现的具体步骤,说明了混合编程需要注意的问题,最后给出了相应的实例。

【关键词】C语言;汇编语言;混合编程;方法1.C语言的概念C语言是在当今软件开发领域中应用十分广泛的一种高级程序设计语言,具有数据类型丰富、表达能力强、效率高、可移植性好且使用灵活方便等优点。

既具有高级语言程序设计的特点,又具有汇编语言的功能[1]Ⅶ。

在实际应用中,为了完成某种特定的功能、或者需要缩短程序的运行。

在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。

2.汇编语言的概念汇编语言是一种符号语言,它与机器密切相关,是面向机器的语言,从而有代码短,占用的存储空间小,运行速度快,直接控制硬件等优点,所以它的运行速度是高级语言所不能比拟的。

但用汇编语言开发程序,编程工作量大,开发周期长,容易出错且不易调试。

汇编语言属低级语言,而C语言是高级语言,所谓高级语言就是更容易被人们理解的语言,其实汇编语言能实现的功能往往也能通过C语言来实现,甚至用C语言会更简单,但是汇编语言有一个优势是其他任何语言所不具备的,这也是为什么汇编语言一直能在编程中占有一席之地,那就是汇编语言对硬件的直接控制,也就是说他能直接对硬件操作,可以绕过操作系统等等之类。

虽然有的领域其他编程也能实现,但是在很多地方往往是汇编语言能更加简单,更加完美的完成。

而且学好了汇编语言你就能对cpu是怎么工作的有了清晰的认识,所以学计算机专业的一般都会学汇编语言。

浅谈C语言与汇编语言的结合

浅谈C语言与汇编语言的结合

处理效率,让 c 语 言与汇编语 言结合是一种非常有效的方法。本文给 出了两种语言结合 实现的具体方法 ,重点说 明 了混合
编程的步骤和需要 注意的要 点。
关键字:c语言;;编语言;混编;参数传递;堆栈 r -
中图分类号 :T 3 3 P 1 文献标识码 :A 文章编号:17 — 29 (0 6 5 0 1- 3 6 3 2 1 2 0 )0 - 1 4 0
c语言是 目前微 机应用系统开 发中最常用的软件 工具之 一 , 也是编写微 机接 口电路板管理控制软件的最有效 的计 算机语
言之一 。 与汇编语言相 比, 它可以编写出更加灵 活和更多功能 的用 户界面 , 提供优质 的图文显 示而且硬件处理效率也不会降
低太多。汇编语言开发的程序代码短、执行速度快, 由 但 于汇编语言是低级语言,使用汇编语言编程是一件很麻烦的事情,
尤其是进行数值运算 或结果显示时更为复杂 。因此 , 只有对程序执行 的时间要求十分苛刻时 , 才考虑使用汇编语言 。 对大 多 数应用环境 ,c 语言是能满足要求 的。当对速度要求极 为苛 刻时,最 佳的解 决方法是利用汇编语言和 c 语言的混合 编程 ,
对速度要求很高的处理模块用汇编语言 , 而其余的模块由 c语言完成。在编写硬件驱动,工业实时控制以及大量的计算方
分号 或换行符结束 ,而注释必须是 C语言格式的。 ( 三)利 用 【 例题 1 明这种方法操作的步聚如下 : l说
1 、在 T C集成 环境 中编写一个主程序 , 取文件名的后缀为_ c ,例如 a 。 . c 2 、在 T C集成环境 中编写汇编代码 ,取文件名 的后缀为.m,例如 ts a s .m a
件编译连接, 利用 Po c r e m 编译工程文件 , r et o cn e j …P j t a 利用 C m i …B i l 工程文件编译连接 , o pe ud l l la 对 最后连接成可执行文

汇编语言与c语言混合编程的接口技术

汇编语言与c语言混合编程的接口技术
汇编语言完成 。 本 文主要 研 究汇编 语言和C 语 言混合 编程 , 在当 前程 序 开发领 域提供 了 新 的途径
关键词 : 汇编 程序 ; c 语 言; 编排 技 术
1 引言
在平 常编 写程 序 时, 我 们 一般 都 希 望选 择 C 、P a s C a l 、
2 . 2 c 程序中访问汇编程序变量

2 . 1汇编程序中访问c 程序变量
在c / c + + 程序 中声明的全 局变量可 以被 汇编程 序通过地址 间接访 问。 具体访 问方法/ 步骤如下:


FS u b :
_
N O P R E T F
以上程序在 I D E 集成开发环境下编译 连接后即可运行。 ①c / C + + 程序 中声明全局 变量; ②在汇编程序 使用I M P O R T / 3 . 2在汇编程序中调用c 函数 在汇编 函数 中要调用c 语言的子函数 , 应该 根据 C 函数 原型
语言文件 , 比较简洁, 但是有诸 多限制 , 当汇编的代码较多时一 般放在 单独 的汇 编文件中。 这 时就需要在汇编 和c 之间进行 一 些数据 的传递 , 最简便的办法就是使用全局变量。

∥汇编子函数F S u b ( )

C OD E

P U B L I C

F S u b
计算机 世界 ・
汇编语言与c语言混合编程 的接 口技术
金 微 ( 江苏技术师范学 院计算机工程学 院, 江苏 常州 2 1 3 0 0 0 )
摘 要: 随着网络与通信技术的发展 , 正在 涌现 出大量新的嵌入式系统, 通常情a L  ̄ ] c 或者c + + 完成大部分的编程任务, 仅有初始化部分用

C语言与汇编语言混合编程的研究与实现

C语言与汇编语言混合编程的研究与实现
函数 三种 方法 。
广泛的一门面向过程 的语言, 对于 c程序员来说 ,
不必熟悉计算机 内部的具体构造和机器指令 , 而把 主要精力放在算法描述上面。众所周知 , 言功 c语 能丰富 , 表达能力强 , 使用灵活 , 应用范 围广 , 移植
性好 , 效率高 以及丰富的数据类型等诸多优点而备 受亲睐。但是 , 不可否认 , 在某些 特殊 的 I / O地址 的处理或 中断 向量地址的安排 以及接 口地址 的读
A s at s m l l gaehsh dat e fes oe,i r pe ,n e Cl gaei a r es r n dl gae n bt c A s bya ug a e vna s s cd }曲e sedadyt nug o s~o et nug d r e n t a g ol I a s pc i e a a
收 到 本 文 时 间 :05年 7月 2 20 1口
在被 c程序调用 的汇编 语 言子程序 中, 所有 的标识符前都要加下 划线 “” 此外 , , 相互调用时 , 汇编语言源程序 中的标识符按照 c语 言的习惯最 好 采用 小写 字母 。
维普资讯
的方法 、 约定 规则以及 实现的具体步骤 , 说明了混合编程 需要注意的 问题 , 最后给出 了相应 的实例。 关键词 中闰分类 号 T 3 P1
Re e r h a d i p e n a i n o ie r g a s a c n m lme t t fM x d P o r mm i g b t e L n t e a d Ase l a g a e o n e we n C a g mg n s mb y L n u g
e p n ei otn s e t,a d sv s; me e a ls x his t h mp r t p cs n i s x mpe . a a e o
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第!卷 第"期 #$$% 年 & 月
南通航运职业技术学院学报
’()*+,- (. +,+/(+0 1(2,/3(+,- 4 /526+32,- 763883+0 2(--505
19:;! +9;" <=>;#$$%
浅谈 ’ 语言与汇编语言混合编程的一些技术
钱春英
(无锡商业职业技术学院 信息工程系, 江$@?#% 作者简介: 钱春英 ("@A! — ) , 女, 江苏无锡人, 无锡商业职业技术学院讲师, 硕士生。
第"期
钱春英: 浅谈 ! 语言与汇编语言混合编程的一些技术
#"
!"#$%%&’ !"# ( $%&’()*+,-.+,/012345 )*+)&,-./,0,)1& )*+)&#-12034567-8209:;<=-&’063456 6. > +,78")*$%7(&’9:;<-)*$%7=" ?/8@AB 23<>&’?9:;?@= ABCDE F5?/8@AB-./,CD"AEF G%?/8!AB-*B -. > $%7=GH234 )*+)&, I )*+)&, ./,HD"AEF )*+)&, *B ! !"#$%!"#&’()* JK’LMNOPQRST<.UV8"WX8"+,Y’Z7([\]^Y’/0 <IX_‘a
bcdefgQRhGijY’fgQR\<kbcGl8"+,UVmn\(opqr s tuvfgQ R<wxl8+,mn\yopz8+,({|}~UV g)*+,\<4 y{|z 8+,gR7(’L<l8)*+,=STFBE IJK L? ( g)*+,\<+,7 jfR9R(< L? W.:E 4{|z8+, Mg(Y’<4 L? <w\MNY’("VE ]" 8? L?<F5 ?/LM%8? ’"D%8?<L? IJI ’L F¡)*+,7¢]£¤¥’L<w¦§q¨© L? (ª<w«.R 7]¬­®<
+¾*¿HT 6 Ucd®ÀÁÂHÃTÄÅÆUFÇÈÉÊË’Ì&’(@!y :;ÍÎ@ÏÐÑ Ò¶Ó:;Ô.ÕÖרrÙ@«ZQÚH×*Ùr] ÛÜqTÒ ÝÞ²wßUH*àáâd:@ãäH^åæ*5ç¶.@èéH¥¦Ôv:Hêëìí4î @ïDÑ
(下转第 55 页)
#!
南通航运职业技术学院学报
!""# 年
!"#$ !"%#"%$" &’()*+,-./0123456 %&’()") *+,-8 7 %&’(.") *+,/8 7 %&’0$") !+128 7 345 9:;<=> ?9:;@ABCDEF<=GH IJ<=>@KLH6 MN,OPQR<=>67 KST 890 &’( UV3 KST 8" &’(UV- KSWXYZ!T $" U[\YZ!T 8" &’(U] 6 *^2_&’(U‘a <=>] 34/ bacd9:; Cecd9:;@fgN,6 7hi ::[$:[:; j $; klmnHWEMo’pq@rst;uapqV 3hiTv:wxG!yz{Z|J}~HW %&’0:+<!+0 :+V =h +&+0!+0 !+0 H23f @V -h >?@ Cecd:;] !"#$ 3G*hH<= N66 .3cd9:; ABC#@;&CDEH| 8H*H+cd9:;01 8F >] ?"@?>C0;C@0ABC#@;&CHE %8;CH0E I+>;C@AH J$KC<ABC.@;&CH=3<=EELM 4%&$?90:%899 #&$?0+B*9;# NABC#8@;&CHE ABC#@;&CO+>&. +B:P0*+ %&’0*+<:+ %&’08"<0Q*+,-R %&’0."<0Q*+,/R :P>08"<.9 +&+0*+ >?@ ABC.@;&C0?C$+ ?C$ U %&$?90:%899 6 @dV.&$? ¡3¢£¤@wxH 2 %8:% @¥¦¤§Q3RV +B+9;.0NABC.@;&C ¨© ABC.@;&C ª@H*+«Zp¬­d®Q=R] ¯ 6 °:;±²³ ?"%+9S. ’´Hcd.°:; ?"%+3348:% ’´Vµ!"¶·@d¸¹d 1º :; ?"%+94&!T » ?"%+34&*TV 9;CU ¼Q:;¯½º :;¼Q1*AB:; ?"%+4?"?] " %&’ !
! "#$ :- %&
!"#$% 0%10-1+ ’()5+W *+,-0315+./012345678%...5 091+ 9:;5+ <=>?@ABCDE0315+./FGHIJ5678%..95
-#*% ;&<%+ !"#="/**&’= 2%4.’#3#=&%1 #, > ?/’=@/=% /’+ )11%*$39 ?/’=@/=%
第!期
瞿芳: 关于修订国标中形位公差项目的探讨
""
!"#$%&’()*+,-./01234+56789:6;<=1>?@A1BCDEF3G 4HIJ KLMNOP !"#$%%&%Q’()*+%%,-R%../ S:T%&’U)*4BVWX1YZ[\]^_‘J
参考文献:
0%1+ 中国机构工程学会, 中国机械 设 计 大 典 编 委 会 2+ 中 国 机 械 设 计 大 典 (第 - 卷 ) —机 —— 械 设 计 基 础 0314$ 南 昌 : 江西科学技术出 -&&-5 版社, 0-1$ 成大先 5$ 机械设计手册 06157 北京: -&&85 化学工业出版社, 091$ 章玉麟 5$ 互换性与测量技术 0615$ 北京: %..-5 中国林业出版社, 0810:1+ 倪新珉 5+ 关于如何修订 ’(;*+%%,-<%../ 的思考 0=15$ 机械工业标准化与质量, -&&8 , 5 (- )
!"#$% &’(# )*%’+*%’( #, -./0%;!#1&(&#’ 2#3%"/’4% 5(%*1 &’ 67
>?7@ABC "DEFFEBC7G7HBCEBIIJEBC7KIFAJLMIBLNOPEABCQR+6AJELEMI+*ISDBTUTCV7WTUUICIN7XABYEBC7=EABCQR7-%&&&%b a )$1("/4(c*DI7 AJLESUI7 ABAUVQIQ7 LDI7 IZEQLIBL7 FJT[UIMQ7 T\7 QDAFI;FTQELETB7 LTUIJABSI7 QILLEBC7 EB7 ’(%%,-<%../N7 AB]7FRLQ7\TJ^AJ]OLDIOAMIB]MIBLOLTOQEMFUE\VOLDIOELIMQOT\OQDAFI;FTQELETBOLTUIJABSIO^ELDOLDIO\IAQE[EUELVO]IMTBQLJA< LETB4 8%9 :#"+1c’(_’RTO(EAT‘a+"DAFI;FTQELETB+LTUIJABSI+ELIMQa+bJT[UIMQa+cMIB]MIBLa+@IAQE[EUELV +++++
"¯°¤¥’L<±®²³.+,mn\´µ FB$¶w]^¤¥’L®5 ?/LM%8? ’"D%8?%=L? L/8%L?=L?1B)h· L?1B)NO 2"D3456P;5 8?QI¹=R ¸ 2"D3456P;5G 8?QO¹=R ¸ L?1B) Fº$¶¬7< »¤¥’L(¼½¾’ .w\(="7<¿¯ L? »:(<À 8? » ÁÂ(<" ÃÄÅ;w¤¥:; ºÆÇ" 8? ÈÄÅ;<GÉ^½(¤¥’LÊ04 R Ë̪ F¡.l8+,7"‘ LAÍEA ÎHÏËÌ<-=ÐÏÑfgR<wËÌÒª ÆF<B ÆÓ»G LA 9 EA ËÌ(ªfR5 ?/LMG8? 2"DG8?G=L? L/8GL?=L?1B) ?/LMGLA ?/LMGEA MNY’ 8? L? .Y’MNSÔG 8? fR\(]^<Ç" 8? wÕÖ«q×Y’ ØÙ·8 " ?4 ./,BK )*+,ÚÛ(z&’521A,H FTJJJJJJG./#BKH?K=?I=?SFhJJJJJJU ×Y’» I ½¾(Ü’ ª<Ýpqr &)+/’G1EE&)LL<.©ÚÞ*ßÖÞàá" I ^½¾ F¡GMN(Y’ ?KÍ?IÍ?S <Ô IJO IJS
相关文档
最新文档