HC08C语言程序设计 5 .doc_第1页
HC08C语言程序设计 5 .doc_第2页
HC08C语言程序设计 5 .doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HC08 C语言程序设计(5)HCS08返回值:函数返回值总是在寄存器中,根据返回值的类型不同,而采用不同的寄存器返回值类型寄存器char (signed 或 unsigned) Aint (signed 或 unsigned)H:Xpointers/arrays(指针/数组)H:Xfunction pointers(函数指针)H:X如果返回值的长度超过2字节,则在H:X存放返回值的地址。例如:写一段C语言源程序,然后把它编译为汇编语言,观察调用规则i nclude /* 为了包含中断允许宏定义*/i nclude unsigned char r;unsigned char f1(unsigned char v1,unsigned char v2,unsigned char v3,unsigned char v4) v1+=1; v2+=1; v3+=1; v4+=1; return(v4);void f0(void) r=f1(4,9,6,3); void main(void) EnableInterrupts; /*中断允许 */f0(); for(;) _RESET_WATCHDOG(); /* 喂狗 */ 在C语言源程序中f0函数调用f1函数,传递参数并有返回值函数f1编译后的汇编语言PSHA ; 有参数用X、A传递,入栈保存防止破坏PSHX TSX ; X=SP+1 INC 5,X ; v1+=1,参数v1在sp+6处 INC 4,X ; v2+=1; 参数v2在sp+5处 INC 1,X ; v3+=1; 参数v3在A中,被本函数入栈 INC ,X ; v4+=1; 参数v4在X中,被本函数入栈 LDA ,X ; return(v4);返回值在A中 AIS #2 ; 调整堆栈指针,指向返回地址 RTS ; 返回f0函数函数f0编译后的汇编语言 LDA #4 PSHA ; 参数v1入栈 LDA #9 PSHA ; 参数v2入栈 LDA #6 ; 参数v3用A传递 LDX #3 ; 参数v4用X传递 BSR f1 ; 调用函数f1 AIS #2 ; 清除传递的参数 STA r ; 保存返回值 RTS ; 返回main函数Main函数编译后的汇编语言CLI BSR f0L3: STA _COPCTLBRA L3 只要遵循以上调用规则,就可以实现用C函数和汇编函数的相互调用。调用时使用对方定义的函数名。16.2.5启动代码在启动main函数之前HCS08 C 语言会自动运行一段启动代码,进行硬件初始化和建立C语言的运行环境。起动代码一般由编译器自动生成,也可以由用户自写的启动代码替代自动生成的启动代码。启动代码的名字为start08.c,它的主要工作是:l 禁止中断l 从ROM到RAM复制并初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论