keil汇编程序
A. 用keil软件如何将汇编与C语言结合起来一起编写单片机的程序
在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法。
方法1)在Keil C51的函数中直接插入汇编语句
方法2)按照Keil C51接口规则,编写汇编模块
方法1是利用编译控制命令#pragma asm(用来标识所插入的汇编语句的起始位置) 和 #pragma endasm (用来标识所插入的汇编语句的结束位置) ,这两条命令必须成对出现,并可以多次出现。在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? funcname?Filename
数据段如:?DT? funcname?Filename; ?BI? funcname?Filename
标准段名前缀列表
段前缀 存储类型 含义
?PR? Program 程序存储区的代码
?CO? code 程序存储区的常量
?BI? Bit 内部数据存储区的可位寻址的位变量
?BA? Bdata 内部数据存储区的可位寻址的字节变量
?DT? Data 内部数据存储区的变量
?ID? Idata 内部数据存储区可间接寻址的变量
?PD? Pdata 外部数据存储区的页变量
?XD? Xdata 外部数据存储区的变量
B. keil查看汇编代码
一种方法是在成功编译程序后,点击工具栏上一个红色的"D",进入调试状态,再把鼠标点到c代码处,右键查看汇编代码,就可以看到所以c编译后的汇编代码了。
第二种方法可以产生汇编代码文件,操作如图,右键点开,选中"generateassemblerSRCfile"
C. 如何使用Keil编译汇编程序或C语言程序
打开Keil后选择【File】下的【new】新建一个空白文档。将编辑好的程序源码复制到该文件中。
如何使用Keil编译汇编程序或C语言程序
选择左上角的保存按钮进行保存,将弹出保存对话框。
如何使用Keil编译汇编程序或C语言程序
选择保存路径和编辑文件名。记住,这里的文件名很重要,如果你是C语言程序的话,加上.c后缀,如果你是用汇编语言,加上.ASM后缀。这样,Keil就能自动识别你的文件类型了。
如何使用Keil编译汇编程序或C语言程序
现在你就可以将保存的文件添加到项目中了,项目文件要提前在[Project]中新建。右击选择【Source Group1】点击【Add Files to Group..】
如何使用Keil编译汇编程序或C语言程序
在弹出的对话框中选择[文件类型]为All files,这个很关键。然后选择你要添加的文件。点击Add添加。
如何使用Keil编译汇编程序或C语言程序
在[Source Group]中就会显示新添加的.ASM文件,按图中选择弹出【Option for Target】对话框。
如何使用Keil编译汇编程序或C语言程序
7
切换到[output]选项卡选中【Create HEX FILE】,就可以在编译成功后自动生成.hex文件。编译按钮在左上角3个按钮,从左到右依次点击,如果源码没错,都可以编译通过了。
如何使用Keil编译汇编程序或C语言程序