单片机 _c与汇编混合编程.ppt
《单片机 _c与汇编混合编程.ppt》由会员分享,可在线阅读,更多相关《单片机 _c与汇编混合编程.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C和ASM的混合编程jianghq2003-5 Tsinghua DEE单片机与嵌入式系统Content程序的结构汇编程序C程序project框架如何改写汇编程序?在C程序中如何做一些底层操作?存储空间结构程序的结构汇编程序结构C程序结构M30624FGFP Memory Map几个主要的参数RAM区 ramTOPramENDROM区 progTOP Vvector汇编程序结构段类型RAM DATAROM CODE ROMDATA汇编程序结构 段定义.SECTIONmemory,DATA ;数据段.ORGVramTOP.SECTIONprog,CODE;代码段.ORGVprogTOP.SECT
2、IONval_vect,ROMDATA ;用户自定义中断向量段.ORGVintbase.SECTIONinter,ROMDATA ;固定中断向量段.ORGVvector+(8*4)汇编程序中几个主要的参数VramTOP.EQU 000400HVramEND.EQU 002BFFHVIstack.EQU 002C00H ISPVprogTOP.EQU 0F0000HVintbase.EQU 0FA000HVvector.EQU 0FFFDCH SB_base.EQU 000380H SB关于SB和FB.SBSB_base.SBSYM recv_nums 告诉编译器使用该变量的指令寻址方式采用相对
3、基址寻址方式,可以提高生成代码的效率。关于堆栈两种堆栈:堆栈指针ISP和USP使用何种堆栈,由堆栈指针选择标志位(U标志)选取。U=0 选取中断堆栈指针ISP U=1 选取用户堆栈指针USP响应中断后,该标志清0,执行中断子程序SP指针位置如何设定:栈顶指针Push:SP=SP 1 Pop :SP=SP+1C程序结构RAM DATA data bss stack heapROM CODE program ROMDATA rom vector fvectorNC编译器对Section的处理Section的属性属性:I(是否初值),N/F(扩展区)S(SB寻址区),E/O(偶地址对齐)举例:bss
4、_SE,bss_NE,data_FE,data_SEIdata_SEbss_SEdata_SObss_SOdata_NEbss_NEdata_NObss_NOstackheapdata_FEbss_FEdata_FOdata_FE C程序中所有的section列表DATArom_NErom_NOrom_FErom_FOdata_SEIdata_SOIdata_NEIdata_NOIdata_FEIdata_FOIvectorfvectorROMDATACODEprograminterruptprogram_S根据芯片修改sect30.inc1.注释掉不存在的段2.最重要的三个段的位置设定.se
5、ctiondata_SE,DATA.org400H.sectionrom_FE,ROMDATA.org0C0000H.sectionvector,ROMDATA.orgVECTOR_ADR VECTOR_ADR.equ0FA000H其他的段就交给编译器来处理例子:一个Section分配的结果C程序结构 project可能包括多个asm文件,C文件如何安排project的结构?程序的入口首先要清楚整个程序的执行过程从哪里开始执行?Startup文件 sect30.inc文件;fixed vector section.org0fffdchNMI:.lworddummy_intRESET:.lwor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 _c与汇编混合编程 _c 汇编 混合 编程
限制150内