KEIL C51环境下,汇编与C语言交叉编译的问题
来源:互联网 发布:南京大学网络 编辑:程序博客网 时间:2024/04/25 07:53
1. 关于如何在C语言中嵌入汇编命令:
转载自:http://www.keil.com/support/docs/2308.htm
C51: GETTING INLINE ASSEMBLY TO WORK
Information in this article applies to:
- C51 All Versions
QUESTION
How do I implement inline assembly in C51 using the ASM and ENDASM directives. I have read some of the knowledgebase articles relating to this problem, but I still cannot get it to work.
ANSWER
The following example program, MAIN.C, demonstrates some simple inline assembly.
void main(void){ test();#pragma asm JMP $ ; endless loop#pragma endasm}
The following rules apply to C51 inline assembly:
- To use #pragma ASM/ENDASM, you must set the Generate Assembler SRC File andAssemble SRC File source file compile options in µVision by right-clicking your source file name in the Project Workspace and selectingOptions for File.
- When using the Generate Assembler SRC File and Assemble SRC File options in µVision, if there are no other C modules in your project, you must manually include the C51 Run-Time Library (C51S.LIB, C51M.LIB, or C51L.LIB).
MORE INFORMATION
- Refer to ASM in the Cx51 User's Guide.
- Refer to Interfacing C to Assembler in the Cx51 User's Guide.
SEE ALSO
- C51: PROBLEMS WITH #PRAGMA ASM
- GENERAL: SRC DIRECTIVE
- BL51: WARNING L1 (UNRESOLVED EXTERNAL) USING INLINE ASSEMBLY
- C51: INLINE ASSEMBLY GENERATES TARGET OUT OF RANGE
- C51: IN-LINE ASM GIVES COMPILER WARNINGS
FORUM THREADS
The following Discussion Forum threads may provide information related to this topic.
- Asembly code in C
Last Reviewed: Thursday, July 17, 2008
--转载自:http://blog.21ic.com/user1/6088/archives/2010/68469.html
方法:(假设当前工程中只有一个C代码文件)
第1步:新建一个工程,添加C文件,编译通过
第2步:右击Keil界面中Project Workspace里的C文件名,选择‘Option for…’
第3步:点击‘Generate Assembler SRC File’‘Assemble SRC File’两个三态复选框使它们呈高亮并勾选,点击确定
第4步:将KEIL安装目录下C51/LIB/C51S.LIB(如果是SMALL模式)文件复制到工程目录下
第5步:添加库文件C51S.LIB文件到工程,即右击‘Source Group 1’,选择‘Add Files to Group …’,在工程目录下选择C51S.LIB,点击打开
(因为有了第3步中的操作,如果在这里不添加库文件,则编译生成的HEX文件不能被单片机正确执行,同时编译时会出现一个警告:
WARNING L1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_STARTUP
无法识别?C_STARTUP这个标号,这个标号是在库文件中定义
)
第6步:打开工程目录,可以看到新生成一个扩展名为.SRC的文件,将其扩展名改成.A51
第7步:添加这个.A51文件到工程(这时候工程就包含C51S.LIB库文件,不然编译会产生第5步中说明的警告,且生成的HEX文件不能被单片机正确运行)
第8步:重新编译,生成HEX文件,加载到单片机中,可以发现与C语言运行的现象是一致的
- KEIL C51环境下,汇编与C语言交叉编译的问题
- 探究下i--和--i在keil下编译c与汇编的区别
- Keil 4/C51与Keil 5的融合安装,51系列可在keil 5下编译安装方式
- keil C51环境下,液晶某些汉字不显示问题
- keil C51环境下,液晶某些汉字不显示问题
- 关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用
- Keil C51对C语言的关键词扩展
- Keil C51对C语言的关键词扩展之一: _at_
- Keil环境下“无法执行C:\Keil\C51\BIN\A51.exe”
- [编译环境][gcc]16位程序中汇编代码与C语言代码的混合编译
- Keil c与汇编
- 交叉编译环境下gcc编译汇编文件
- Keil环境下如何在C中内嵌汇编
- Keil C51与标准C比较
- Keil C51与标准C比较
- Keil C51与标准C比较
- 关于不同的环境下交叉编译的问题
- tiny6410 ubuntu下交叉编译环境的建立问题
- ubuntu 安装mysql-server配置
- vi我常用到的快捷键和功能总结
- python判断对象是否为文件对象(file object)
- 地图域图片
- 函数----MoveWindow()与SetWindowPro()函数
- KEIL C51环境下,汇编与C语言交叉编译的问题
- 面试题交通灯管理系统
- Unity3D+免费工具开发2D游戏之一:工具和插件介绍
- RDP协议详细解析
- python,一接触便不可自拔。
- Linux下使用ps命令来查看Oracle DB以及EBS相关的进程
- Android系统架构
- hdu 1892 See you~
- android应用开发环境