在Freescale的codewarrior汇编程序中,在主函数文件和外部文件中怎样定义,才能在主
函数中调用外部文件中的函数呢?
其实可以用XDEF和XREF方式定义。XDEF用于定义一个可以被外部调用的函数,XREF用于
该文件调用外部函数,类似C语言中的头文件,在uc/os-ii对飞思卡尔单片机的移植范例中就使用
到了这两个伪指令。具体应用如例所示:
在file1中 (caller):
XREFFUNC_1
MainLoop:
NOP
JSR FUNC_1
BRA MainLoop
在file2中(callee):
XDEFFUNC_1
FUNC_1:
NOP
RTS
一、当C语言调用汇编语言时,采用如下的方法:
1、汇编源程序中:
XDEFASMData, ASMConst;声明 ASMData, ASMConst 可以在模块外访问
MyData:SECTION
ASMData:DS.W1; 定义变量
MyConst:SECTION
ASMConst:DC.W$44A6; 定义常量
2、在C语言源程序中:
#pragma DATA_SEGMyData/* 定义变量段 */
extern intASMData; /* 变量 ASMData 是外部模块声明的 */
#pragma DATA_SEGDEFAULT/* 返回默认变量段 */
#pragma CONST_SEGMyConst/* 定义常数段 */
extern const intASMConst;/* 常量 ASMConst 是外部模块声明的*/
#pragma CONST_SEGDEFAULT/*返回默认常数段 */
二、当汇编语言调用C语言时,采用如下的方法:
1、在C语言源文件中:
unsigned intCData;/* 定义变量 */
unsigned const intCConst;/* 定义常量 */
2、在汇编语言源文件中:
XREFCData; 外部声明的变量
XREFCConst; 外部声明的常量
使用:
LDD CConst
STD CData