Codewarrior汇编中的XDEF和XREF释疑

原文地址:Codewarrior汇编中的XDEF和XREF释疑
在Freescale的codewarrior汇编程序中,在主函数文件和外部文件中怎样定义,才能在主

函数中调用外部文件中的函数呢?

其实可以用XDEF和XREF方式定义。XDEF用于定义一个可以被外部调用的函数,XREF用于

该文件调用外部函数,类似C语言中的头文件,在uc/os-ii对飞思卡尔单片机的移植范例中就使用

到了这两个伪指令。具体应用如例所示:
在file1中 (caller):
XREF FUNC_1
MainLoop:
NOP
JSR FUNC_1
BRA MainLoop

在file2中(callee):
XDEF FUNC_1
FUNC_1:
NOP
RTS

一、当C语言调用汇编语言时,采用如下的方法:

1、汇编源程序中:

XDEF ASMData, ASMConst ;声明 ASMData, ASMConst 可以在模块外访问

MyData: SECTION

ASMData: DS.W 1 ; 定义变量

MyConst: SECTION

ASMConst: DC.W $44A6 ; 定义常量

2、在C语言源程序中:

#pragma DATA_SEG MyData

extern int ASMData;

#pragma DATA_SEG DEFAULT

#pragma CONST_SEG MyConst

extern const int ASMConst;

#pragma CONST_SEG DEFAULT

 

二、当汇编语言调用C语言时,采用如下的方法:

1、在C语言源文件中:

unsigned int CData;

unsigned const int CConst;

2、在汇编语言源文件中:

XREF CData ; 外部声明的变量

XREF CConst ; 外部声明的常量

使用:

LDD CConst

STD CData





你可能感兴趣的:(数字电子)