首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教高手: 关于C语言和汇编语言之中共用常量的问题

请教高手: 关于C语言和汇编语言之中共用常量的问题

 


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


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

胜固欣然败亦喜
我看了几天Manual自己回答: 先在C语言里定义 const uint8 OS_MAX_TASKS = 15;
再在汇编语言中用 lda OS_MAX_TASKS, 汇编的语句是16位ROM区地址,它实际是用ROM区来传递这个常量的,所以无法用这个语句:lda #OS_MAX_TASKS
胜固欣然败亦喜
拉了一句汇编声明: XREF  OS_MAX_TASKS
胜固欣然败亦喜
应该可以直接引用的。最好把它定义在头文件中,然后include它。
海纳百川  有容乃大
这是个解决方法,用常量的方式
但是,在宏定义中,一般编译器会直接用10替代OS_MAX_TASKS,不占用任何存储空间
在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

谢谢楼上

返回列表