C51里面,汇编语言跟C语言可以互相调用,这我都试验过的,C调用汇编,汇编调用C!!!要这么做的话,汇编语言必须严格遵守Keil的格式,需要加入很多控制语句,一点都不能省(我曾经用C调用汇编,少了一个字符,编译的时候提示一个警告,没在意,结果编译通过,程序不能运行);其次就是参数传递的问题,建议楼主在百度文库里面搜索《Cx51 编译器 用户手册》中文,403页,可以下载,看第六章,里面讲的是参数的传递规则,还有C调用汇编的方法,关于汇编调用C,可以看\Keil\C51\LIB里面的STARTUPA51文件,这是C语言的启动文件,典型的汇编语言调用C函数(只不过这个函数的名字叫 main 呵呵),然后模仿它的写法在里面根据前面讲的参数传递规则加入需要传递的参数就好了。
注意:汇编调用C的话,必须要在汇编程序里面初始化堆栈指针SP,因为C语言肯定会用到堆栈。
PS:C语言多简单啊,比汇编简单多了,会汇编得人学C很容易的,我就是先学的汇编,建议LZ学习C语言
首先,你需要学会c语言的基础语法,那么你就可以写一些简单的程序了。想要进阶就要进一步深入学习算法等。其次,学习编程语言必须要有兴趣,兴趣不够很容易半途而废。
格式的话,养成良好的缩进习惯有助于别人和自己更容易看懂代码。
推荐一本书<<c primer plus>>写的很不错。
你还需要安装ide,推荐安装vs2012。
:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
1 写代码。这是最基础的一步,即实现C语言的源文件(c,必需),和可能的头文件(h,非必需)。
2 编译。将编写好的代码,通过编译工具,转换为目标文件。此步中,会对文件内部及包含的头文件进行语法语义的分析检查。如果出错,则必须返回到1步对代码进行修改,直到没有错误为止。
3 链接。将目标文件链接成可执行文件。此步会对文件直接的关联进行检查。如果出错需要返回到1修改代码。直到没有错误。
4 运行。这个是最后一步,也是C语言的最终目的。
在运行结果与期望不符时,需要检查原因,修改代码,重新执行1,2,3直到程序没有问题。
用keil软体如何将汇编与C语言结合起来一起编写微控制器的程式
在混合程式设计中,最常用也是最实用的方法是在C语言中加入部分组合语言的程式码,分为两种方法。
方法1)在Keil C51的函式中直接插入汇编语句
方法2)按照Keil C51介面规则,编写汇编模组
方法1是利用编译控制命令#pragma a (用来标识所插入的汇编语句的起始位置) 和 #pragma enda (用来标识所插入的汇编语句的结束位置) ,这两条命令必须成对出现,并可以多次出现。在Keil C51中不对插入的汇编程式码做任何的处理。
方法2编写汇编模组,需对KEIL编译器的编译过程做些了解。Keil编译器的编译过程是首先将专案中的一个个原始档编译为目的码(obj档案),然在再通过联结器产生为最终可执行的hex档案。
目的码将其中的程式码、资料、常量放在不同的“段”中,储存程式的段称为“程式码段”,储存资料的段称为“资料段”,最终目的码经过Keil的联结器按照“段”的要求转换为程式和资料地址固定的可执行档案。
在Keil软体中,“段”按定位属性分为:“可重定位段”和“绝对段”。
“可重定位段”:程式和资料在其分别所对应的储存单元(FLASH和RAM)中的储存地址是浮动的、可重定义的、相对可变的。
“绝对段”:其地址在连线前就已确定不变,联结器据此为它分配地址。
经Keil编译器生成的“段”具有如下属性:
1)段的储存属性(program code data pdata xdata bdata bit等);
2)段的起始地址;3)段的长度;
4)段的定位要求:绝对段地址固定,可重定位段定位的要求如要求程式码段在2K范围内,资料段定位在可位定址区等;
5)段名:包括程式和资料(变数和常量)的段的储存属性及段所属的程式模组(档案)。程式码段: PR funame?Filename
资料段如:DT funame?Filename; BI funame?Filename
标准段名字首列表
段字首 储存型别 含义
PR Program 程式储存区的程式码
CO code 程式储存区的常量
BI Bit 内部资料储存区的可位定址的位变数
BA Bdata 内部资料储存区的可位定址的位元组变数
DT Data 内部资料储存区的变数
ID Idata 内部资料储存区可间接定址的变数
PD Pdata 外部资料储存区的页变数
XD Xdata 外部资料储存区的变数
如何将微控制器的组合语言转成微控制器的c语言只有自己重新编写
写stc微控制器的程式,用汇编语言用什么软体来程式设计呢51微控制器系列一般都用KEIL程式设计 汇编 C语言都可以
在keil-c51中如何将汇编程式载入微控制器我来回答,首先生成(害克思)档案,然后各家微控制器载入方法都不一样,初学者以stc微控制器载入最简单,慢慢学,在以后就明白了为什么它载入简单,可买尽量支援微控制器型号多得烧写器,美名曰程式设计器,stc基本不用,为什么不用,可能是stc耍了个小聪明,在里面加了点小程式,就可以串列埠下载拉,制作stc下载线很简单,网上一搜就知道,经济紧张用stc,方便又快捷
如何用c语言编写微控制器程式。使用微控制器专用的编译器,比如AVR微控制器要用ICC for AVR、AVR Studio 等。然后在选项中选择微控制器型号,比如ATmega16、ATmega128。最后要查询微控制器所对应的库,也就是标头档案。包含对应的标头档案,标头档案中有定义好的微控制器的变数名和函式,写程式要用到,比如引脚可能定义为PORTA,这些要记住,不可以写其他的变数名。具体写程式,和普通的C程式没有什么区别。
基本与普通C语言差不多,只不过微控制器标头档案肯定是与各自微控制器相关了,不是一般C所多用的STDIOH,像51,一般是
#include<reg51h>
51微控制器的程式设计软体(Keil)用汇编语言程式设计,如何将它汇入到isis 中?你是想模拟吗????只要生成hex档案,在proteus拖入的晶片点右键选择edit(一般第二个选项) 然后将hex得路径汇入,就可以模拟。。。生成hex档案的方法是在keil选项卡中的output中设定,hexcreate打勾。。。。。
如何用keil软体编写微控制器程式Keil系列教程:
:blogcsdn/column/details/13472
使用汇编语言编写微控制器程式^_^,这个可以用两个红外对管来实现,进去的时候1,2依次得到低电平,暂存器加1;有人出来的时候2,1依次得到低电平,暂存器减1
当暂存器等于0的时候,灯灭,不等于0的时候灯亮
^_^
程式很简单
就是怕学生会故意捣鬼,要是有一个人背著另一个走出去,灯就不会灭了
^_^
微控制器如何用C语言以及组合语言写滤波程式?滤波,关键问题是演算法,有了演算法剩下的就是coding了
说白了,汇编与C,程式结构是一样的,也就是C一句话汇编要几句语句而已
如果你是想用汇编实现C语言功能呢,我感觉这个应该没什么必要,因为两者最终运行时,同样是以机器语言运行。zd高级语言存的产生就是为了让程序员在编写较少的代码是想更复杂的功能,虽然最终在效率上可能略有下降,但是这是软件工程的思想。但是有些地方是必须使用C,就是 *** 作硬件的时候,有时候为了效率,也可以进行改写。
如果你是在是想知道呢,你对C语言可以进行反编译,就知道大致的结构了,但是C语言本身有很多统一的函数库,所以反编译的东西只要看自己写的东西就好了。
以上就是关于汇编程序嵌入C程序全部的内容,包括:汇编程序嵌入C程序、如何编写C语言程序、C语言程序开发的四个步骤是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)