汇编TC_10ms EQU (SYSCLK / 12) * 10的问题

[复制链接]
2922|11
 楼主| riki2006 发表于 2009-9-15 09:10 | 显示全部楼层 |阅读模式
本帖最后由 riki2006 于 2009-9-15 11:17 编辑

SYSCLK      EQU      18432       ; SYSCLK frequency in kHz
TC_10ms     EQU      (SYSCLK / 12) * 10; number of timer counts in 10ms
请问在汇编里也可以直接运算吗((SYSCLK / 12) * 10)?
chunyang 发表于 2009-9-15 11:33 | 显示全部楼层
只有高级语言才支持。
ZRL700424 发表于 2009-9-15 11:51 | 显示全部楼层
可以,绝大多数编译器都是可以的:

AVR汇编:       
.EQU        ABC=0X0108*1.06/2

     CPI        R17,5000/250
     BRCS        TMR0_RET
ZRL700424 发表于 2009-9-15 11:57 | 显示全部楼层
下面这些都是汇编语句:    
     IN        R17,PINC       
        ANDI        R17,(1<<HY)
        IN        R18,PINA
        ANDI        R18,(1<<WK)|(1<<FY)|(1<<FDKG)
        OR        R17,R18
ZRL700424 发表于 2009-9-15 11:59 | 显示全部楼层
PIC的汇编:
     MOVLW        ~(1<<HI)
        ANDWF        PORTB,F
        MOVLW        ~((1<<ZF)|(1<<FDF))
21ID 发表于 2009-9-15 12:00 | 显示全部楼层
可以的,支持加减乘除
 楼主| riki2006 发表于 2009-9-15 12:04 | 显示全部楼层
还有在程序里也可以吗?有这样一条语句
mov   SP, #STACK-1            ; init stack pointer

所以请高手解答一下,这样在汇编里应用这样的运算有什么规定,比如在keil的汇编环境下。
awey 发表于 2009-9-15 12:05 | 显示全部楼层
条件是参加运算的都是常量
因特网用户 发表于 2009-9-15 12:31 | 显示全部楼层
ZRL700424 发表于 2009-9-15 12:36 | 显示全部楼层
如果是常量的话,加减乘除、左移、右移、或、与、取反等一般的编译器都是支持的(比如AVR、PIC、三星、合泰、十速等等),少数的个别不支持(比如凌阳的不支持或和与),也有些很差劲的编译器连加减乘除都不支持(如小日本的一些芯片:NEC、瑞萨等,这种芯片偶是不会用的)
 楼主| riki2006 发表于 2009-9-15 12:50 | 显示全部楼层
明白了 谢谢各位
chengfei21 发表于 2009-9-15 22:20 | 显示全部楼层
这些都是汇编器帮你运算
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部