C51函数参数传递和返回
发布时间:2016/7/14 20:13:25 访问次数:2653
在C51函数和汇编函数相互调用时经常要进行参数传递,常用的参数传递方式有寄存器传EPL2014-301MLC递和固定存储器位置传递两种方式。
寄存器参数传递:寄存器参数传递指参数通过寄存器R1~R7来传递的,这种形式可产生高效的代码,利用51单片机的工作寄存器最多传递3个参数,具体对应传递方式见表6,7。
表6,7 寄存器参数传递对应的寄存器
固定存储位置参数传递:当无寄存器可用或是采用了编译控制指令“NOREGPARN【s”,则参数的传递将发生在固定的存储器区域,该存储器区域称为参数传递段,其地址空间取决于编译时所选择的存储器模式。在sMALL模式下参数传递在内部RAM中完成,在CoMPACT和LARGER模式下参数传递要在外部RAM中完成。
Fun1(int忄a是第一个参数,在R6,R7中传递。
Fu砣(int b,int c,int苄d):b在R6,R7中传递,c在M,R5中传递,fd则在R1,V,R3中传递。混合编程有时还要进行参数返回,在函数或子程序返回时,.依据返回数据的类型不同有较大的差别。
在C51函数和汇编函数相互调用时经常要进行参数传递,常用的参数传递方式有寄存器传EPL2014-301MLC递和固定存储器位置传递两种方式。
寄存器参数传递:寄存器参数传递指参数通过寄存器R1~R7来传递的,这种形式可产生高效的代码,利用51单片机的工作寄存器最多传递3个参数,具体对应传递方式见表6,7。
表6,7 寄存器参数传递对应的寄存器
固定存储位置参数传递:当无寄存器可用或是采用了编译控制指令“NOREGPARN【s”,则参数的传递将发生在固定的存储器区域,该存储器区域称为参数传递段,其地址空间取决于编译时所选择的存储器模式。在sMALL模式下参数传递在内部RAM中完成,在CoMPACT和LARGER模式下参数传递要在外部RAM中完成。
Fun1(int忄a是第一个参数,在R6,R7中传递。
Fu砣(int b,int c,int苄d):b在R6,R7中传递,c在M,R5中传递,fd则在R1,V,R3中传递。混合编程有时还要进行参数返回,在函数或子程序返回时,.依据返回数据的类型不同有较大的差别。