标题: 请教高手: 关于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 |