C语言程序设计 文档内容摘要:
1、 是否具有对高级语言 支持已成为衡量微控制器性能的标准之一。 显然,在 台上要比在汇编级上编程具有诸多优势:代码清晰易读、易维护,易形成模块化,便于重复使用从而增加代码的开发效率。 又因 C 语言的可移植性最佳而成为首选。 因此,支持 C 语言几乎是所有微控制器设计的一项基本要求。 指令结构的设计就着重考虑了对 C 语言的支持。 一种针对 作平台的译器,1 持的 C 语言算逻操作符(# )在 指令系统算逻操作符与 符大同小异,见表 C 语言支持的数据类型持 使用的基本数据类型如表 示。 3 程序调用协议由于 C 编译器产生的所有标号都以下划线(_)为前缀,而 C 程序在调用汇编程序时要求汇编程序名也以下划 2、线( _ )为前缀。 模块代码间的调用,是遵循 系的调用协议(所谓调用协议,是指用于标准子程序之间一个模块与另一模块的通讯约定;即使两个模块是以不同的语言编写而成,亦是如此。 调用协议是指这样一套法则:它使不同的子程序代码之间形成一种握手通讯接口,并完成由一个子程序到另一个子程序的参数传递与控制,以及定义出子程序调用与子程序返回值的常规规则。 调用协议包括以下一些相关要素:1) 调用子程序间的参数传递;2) 子程序返回值;3) 调用子程序过程中所用堆栈;4) 用于暂存数据的中间寄存器。 系的调用协议的内容如下:1. 参数传递参数以相反的顺序(从右到左)被压入栈中。 必要时所有的参数都被转换成其在函数原型 3、中被声明过的数据类型。 但如果函数的调用发生在其声明之前,则传递在调用函数里的参数是不会被进行任何数据类型转换的。 2. 堆栈维护及排列函数调用者应切记在程序返回时将调用程序压入栈中的参数弹出。 各参数和局部变量在堆栈中的排列如图 示。 3. 返回值16 位的返回值存放在寄存器。 32 位的返回值存入寄存器对 2 中;其中低字在 ,高字在。 若要返回结构则需在 存放一个指向结构的指针。 4. 寄存器数据暂存方式编译器会产生 程动作来暂存或恢复 R 及 存器。 汇编器则通过令可将 动压入栈中,而通过或令将其自动弹出栈来。 5. 指针编译器所认可的指针是 16 位的。 函数的指针实际上并非指向函数的入口地址,而是 4、一个段地址向量_该向量里由 2 个连续的 数据单元存放的值才是函数的入口地址。 下面以具体实例来说明 系的调用协议。 C 程序中调用汇编函数在 C 中要调用一个汇编编写的函数,需要首先在 C 语言中声明此函数的函数原型。 尽管不作声明也能通过编译并能执行代码,但是会带来很多的潜在的 面首先观察最简单的 C 调用汇编的堆栈过程:程序 4参数传递的 C 语言调用汇编函数/*/ 描述: 无参数传递的 C 语言调用汇编函数/ 日期: 2002/12/10/*/_ /声明要调用的函数的函数原型,此函数没有任何参数的传递/=/ 函数: :主函数/=);/*/_ 来自于 时程序,无入口出口参数。 / 束/*/汇编 5、函数如下:/=/函数: :_:延时程序/参数:无/返回:无/= 发环境下运行可以看到调用过程堆栈变化十分简单,如图 示。 现在在 C 语言中加入局部变量来观察调用过程:程序 4 语言中具有局部变量/*/ 描述: 局部变量调用示意/ 日期: 2002/12/10/*/_ /声明要调用的函数的函数原型,此函数没有任何参数的传递/=/ 函数: :主函数/=i = 1, j = 2, k = 3;);i = 0;i+;j = 0;j+;k = 0;k+;/*/ _来自于 时子程序。 无入口出口参数。 / _,);点亮 ,位数(B,显示值/ 束/*/汇编函数如下:=/函数: :_:延时子程序/参数:无/返回: 6、无/=图 表示出了, C 语言中的局部变量( i,j,k)在堆栈中存放的位置。 进一步,我们为函数 递三个参数 i,j,k。 同样来观察堆栈的变化,来理解调用协议。 程序 4 向汇编函数传递参数/*/ 描述: C 向汇编函数传递参数/ 日期: 2002/12/11/*/_a,b,c); /声明要调用的函数的函数原型/=/ 函数: :主函数/=i = 1, j = 2, k = 3;)i,j,k);i = 0;i+;j = 0;j+;k = 0;k+;/*/_a,b,c); 来自于 试传递参数,a,b,c 所传递的参数,无出口参数。 / 束/*/汇编函数如下:/=/函数: :_a,b,c)/描述:测试传递参数/参数:a,b,c 所传递的参数/返回:无/=通过以上三个例子,我们了解到 C 调用函数时是如何进行参数传递的。 另外的一个问题就是关于函数的返回值,是怎样实现的。 函数的返回相对简单,在汇编子函数中,返回时寄存器 的内容,就是此函数 16 位数据宽度的返回值。 当要返回一个 32 位数据宽度的返回值时,则利用的是 的内容:低 16 位内容,。C语言程序设计 文档
相关推荐
1、实验任务用一片 成测温系统,测量的温度精度达到 ,测量的温度的范围在20 度到50 度之间,用 4 位数码管显示出来。 硬件电路图实验原理字温度计是 司生产的 1单总线器件,具有线路简单,体积小的特点。 因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。 品的特点(1) 、只要求一个I/O 口即可实现通信。 (2) 、在 的每个器件上都有独一无二的序列号。
1、独立电唱机前置放大器一个高精确度唱机的前置放大器写 1997 年1介绍最近有非常多关于历史悠久的真空电子管的优点(和缺点)的新闻。 至于这种复古运动多少是基于可论证的理论,多少是建立在发烧友的怀旧情怀和主观印象的基础上,这个问题可能会是一个充满争议的辩论。 我们现在很清晰的是:现在对真空电子管,这种 20 多年前的,被认为和 样古老的东西,有相当多的人进行关注。 现在潮流有点倒转的感觉
1、1绪 论电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。 电力电子技术是电能的最佳应用技术之一。 当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。 随着计算机和通讯技术发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。 随着数控电源在电子装置中的普遍使用,普通电源在工作时产生的误差,会影响整个系统的精确度
在等腰三角形中相等的两条 边叫做腰,两腰的夹角叫做顶角,底边的两个角叫做底角。 (标出各部分的名称) 三、探索等边三角形的特征 1. 出示例 3 按要求剪三角形 ⑴出示一张长方形纸对折。 ⑵用量角器 30的角 ⑶剪三角形 ⑷展开 ,也可以动手折一折或用直 按要求操作 小组中交流 反馈 操作验证 认真倾听 先讨论,在画
, 64N N, a at is or at is is of is at of is in 4th Q) Q) of is a a to 5DD(TL 4 4C 0V ( .6 V 512. S. )to 00 00 (10 260)30) V, 150 0V, 0 300 5V, 0 600 V 0V V, 5V( V 0V V,0 5V( 5 V, 0V, 5V, V, 0V, 5V, V
三角形内的三个角的度数和。 把三角形内的三个角的度数加起来 教学新课 一、 教学例 5 :每个三角形的 3个内角和是否相同。 2.讨论:你打算用什么方法来验证。 3.请用你最喜欢的一种或两种方法进行验证。 4.教师: 介绍沿中位线折三角形验证的方法 (展示:沿中位线折的示意图) 引导