欢迎来到天天文库
浏览记录
ID:40554559
大小:36.00 KB
页数:3页
时间:2019-08-04
《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()函数
此文档下载收益归作者所有