关于C51与汇编的实用混合编程
来源:互联网 发布:诺恩战士捏脸数据 编辑:程序博客网 时间:2024/05/22 21:23
最近研究了下51的混合编程,总结一下吧!
1.生成C51的汇编源码
右键单击项目文件,在弹出的opinion for file ....选择上生成SRC文件,这个可以产生汇编源文件,也能允许在C51中嵌入A51,即汇编代码,另外不知为何在项目中若嵌入汇编需添加keil的C51S.LIB,否则下载到单片机后无法正常运行,至于具体原因,现在还不是很明白。
2.查看SRC汇编文件
在项目文件中可以找到SRC文件,可查看所写的C51代码翻译成汇编后的代码,截取部分如图所示,由于编译器在编译C文件时会加入较多的给汇编器的信息,比如会把函数名称加以修改,如图中的"?PR?_myfun?TEST"等,所以会比较信息杂乱,个人认为,只要能够找主要的信息即可,不必太过究其细节,如每个符号的具体含义等,因为我们一般是在C中嵌入汇编。
3.C51中嵌入汇编
如图所示,在C51中调用汇编子程序,可建立一个空函数,在内部用#pragma asm及#pragma endasm嵌入汇编程序,为更好的掌握在程序编译后的具体情况,我们可以查看SRC文件,整体观察C文件在编译成汇编后是否有问题。
4.51的链接清单
在项目文件生成M51文件是由链接器BL51.exe所生成清单文件,里面有链接的信息,截取个人认为比较重要的信息,即各模块分布情况,如图中的"?PR?_myfun?TEST"的偏移地址为002cH,当用烧录器打开hex文件,便会发现在002cH的中16进制代码,与汇编中的"?PR?_myfun?TEST"的代码16进制相同。
6.扩展运用
通过以上方法,我们便可以获得C文件在编译后的信息,像其他文章中所讲的混合编程,诸如参数传递约定等,其实我们完全可以去观察C文件编译后的汇编文件来获得,对于其他需要共同使用的区域,诸如全局变量等,其实我们也可以去汇编文件观察,这样一来,我们便不用去记忆那些所谓的特殊约定。
本文出自 “Rainlee的随笔记” 博客,请务必保留此出处http://rainlee.blog.51cto.com/7389753/1405317
- 关于C51与汇编的实用混合编程
- 如何实现C51和汇编的混合编程
- 如何实现C51和汇编的混合编程
- C51和汇编混合编程----函数声明
- 关于c与汇编混合编程的一点总结
- 关于c与汇编混合编程的一点总结
- 关于c与汇编混合编程的一点总结
- 关于C/C++与汇编的混合编程
- C51与汇编语言混合编程
- C++与汇编的混合编程
- C51与汇编语言混合编程之一
- 悬而未决:在C51中子函数使用C51与汇编交互编程的问题
- 关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用
- 关于在ARM中(MDK下)C与汇编混合编程的问题
- keil与汇编混合编程
- C与汇编混合编程
- C与汇编混合编程
- C与汇编混合编程
- REST设计规则
- 关于C的声明规则解析
- 关于手势识别
- ButterKnife使用
- 关于利用机器学习进行手写数字的的识别
- 关于C51与汇编的实用混合编程
- 基于Nodejs+express4+Mongodb+Angularjs建立web项目
- 关于51中断总结
- 12864液晶模块的详细使用
- STM32中关于Contex-M3寄存器说明--NVIC/SCB/SysTick
- 状态模式
- UCGUI移植初级解析
- 关于Vmware workstation虚拟机的网络设置问题
- 关于elf结构及其编译连接的理解