Board logo

标题: 请教高手: 关于C语言和汇编语言之中共用常量的问题 [打印本页]

作者: zhangxian    时间: 2006-7-23 10:28     标题: 请教高手: 关于C语言和汇编语言之中共用常量的问题

 


在HC08编程时,我在C语言中用一个#define OS_MAX_TASKS  10 定义的常量,我想在汇编语言中也用这个定义,怎么办?


目前我是在汇编语言中又定义了一遍: OS_MAX_TASKS  EQU  10, 好麻烦!


作者: zhangxian    时间: 2006-7-29 08:36

我看了几天Manual自己回答: 先在C语言里定义 const uint8 OS_MAX_TASKS = 15;
再在汇编语言中用 lda OS_MAX_TASKS, 汇编的语句是16位ROM区地址,它实际是用ROM区来传递这个常量的,所以无法用这个语句:lda #OS_MAX_TASKS
作者: zhangxian    时间: 2006-7-29 08:38

拉了一句汇编声明: XREF  OS_MAX_TASKS
作者: strongchen    时间: 2006-7-31 09:45

应该可以直接引用的。最好把它定义在头文件中,然后include它。
作者: seuafu2005    时间: 2006-7-31 09:47

这是个解决方法,用常量的方式
但是,在宏定义中,一般编译器会直接用10替代OS_MAX_TASKS,不占用任何存储空间
作者: yunfeng    时间: 2006-7-31 13:31

在C中访问汇编变量

变量声明 (ASM)
XDEF ASMData, ASMConst
DataSec: SECTION
ASMData: DS.W 1
ConstSec: SECTION
ASMConst: DC.W $44A6

变量声明(C语言)
extern int ASMData;

extern const int ASMConst;

C代码中使用变量
unsigned int CData;
CData = ASMData + ASMConst + 3;


--------------------------------------

在汇编中访问C变量
变量声明(C语言)
unsigned int CData;

const unsigned int CConst;
变量声明 (ASM)
XREF CData;

XREF CConst;
在汇编代码中使用变量
LDD CConst

STD CData






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0