HC08C语言程序设计 5

HC08C语言程序设计 5

ID:40554559

大小:36.00 KB

页数:3页

时间:2019-08-04

HC08C语言程序设计 5 _第1页
HC08C语言程序设计 5 _第2页
HC08C语言程序设计 5 _第3页
资源描述:

《HC08C语言程序设计 5 》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、HC08C语言程序设计(5)HCS08返回值:函数返回值总是在寄存器中,根据返回值的类型不同,而采用不同的寄存器返回值类型寄存器char(signed或unsigned)Aint(signed或unsigned)H:Xpointers/arrays(指针/数组)H:Xfunctionpointers(函数指针)H:X如果返回值的长度超过2字节,则在H:X存放返回值的地址。例如:写一段C语言源程序,然后把它编译为汇编语言,观察调用规则#include/*为了包含中断允许宏定义*/#includeunsignedcharr;unsigne

2、dcharf1(unsignedcharv1,unsignedcharv2,unsignedcharv3,unsignedcharv4){v1+=1;v2+=1;v3+=1;v4+=1;return(v4);}voidf0(void){r=f1(4,9,6,3);}voidmain(void){EnableInterrupts;/*中断允许*/f0();for(;;){__RESET_WATCHDOG();/*喂狗*/}}在C语言源程序中f0函数调用f1函数,传递参数并有返回值函数f1编译后的汇编语言PSHA;有参数用X、A传递,入栈保存防止破坏PSHXTSX;X=SP+1INC5,X

3、;v1+=1,参数v1在sp+6处INC4,X;v2+=1;参数v2在sp+5处INC1,X;v3+=1;参数v3在A中,被本函数入栈INC,X;v4+=1;参数v4在X中,被本函数入栈LDA,X;return(v4);返回值在A中AIS#2;调整堆栈指针,指向返回地址RTS;返回f0函数函数f0编译后的汇编语言LDA#4PSHA;参数v1入栈LDA#9PSHA;参数v2入栈LDA#6;参数v3用A传递LDX#3;参数v4用X传递BSRf1;调用函数f1AIS#2;清除传递的参数STAr;保存返回值RTS;返回main函数Main函数编译后的汇编语言CLIBSRf0L3:STA_COP

4、CTLBRAL3只要遵循以上调用规则,就可以实现用C函数和汇编函数的相互调用。调用时使用对方定义的函数名。16.2.5启动代码在启动main函数之前HCS08C语言会自动运行一段启动代码,进行硬件初始化和建立C语言的运行环境。起动代码一般由编译器自动生成,也可以由用户自写的启动代码替代自动生成的启动代码。启动代码的名字为start08.c,它的主要工作是:l        禁止中断l        从ROM到RAM复制并初始化数据l        未初始化的数据区域清零l        为堆栈分配并初始化堆栈l        如果用到堆,创建并初始化堆l        允许中断l   

5、     调用main()函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。