打印

CW6.1 C中嵌套的ASM怎樣調用C定義的變量

[复制链接]
2418|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuocong|  楼主 | 2009-2-17 12:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cw, TI, ST, ic, TE
在ASM中調用C定義的變量的時候,CW6.1會報錯。
C18700: Unknown Opcode Operand Combination: Opc.:<Instr>/Dest.:<mode>/Source:<mode>.

    static byte j;
    j=23;
        __asm
        {
                   CLR     j:0     
        }    
會報C18700錯誤。

下面的用LDA 就沒有錯誤。
    static byte j;
    j=23;
        __asm
        {
                   LDA     j:0     
        }    

請問這是為什麽?要怎樣調用C中定義的變量,謝謝!

相关帖子

沙发
zhuocong|  楼主 | 2009-3-21 17:11 | 只看该作者

自己顶一个

LDA支持直接寻址和扩展寻址,而CLR只支持直接寻址,所以当地址大于0xFF的时候就会有问题。
有两种办法解决这个问题:
1,将地址定位到0x100以下。
2,在CLR前加上LDHX,改变bank。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

26

帖子

1

粉丝