在程序集中使用定义

时间:2011-09-19 08:34:36

标签: c assembly preprocessor avr

我正在尝试使用imagecraft编译器avr在汇编中进行一些预处理。到目前为止,我最好的猜测是这样的:

#define TEST 1
#if TEST == 1
ldi R20, 0xFF
#else
ldi R20, 0xF1
#endif

但是这样做会给编译错误:

absolute expression expected

我该如何解决这个问题,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

创建一个这样的答案:

经过一番挖掘后,我找到了正确的解决方案。显然iccavr保留了.define derective来声明别名'到寄存器,所以上面如果实际解决了

.if R1 == 1

生成错误消息。解决方案是使用语法声明符号常量而不是define:

TEST = 1 

然后按预期工作。