本帖最后由 zhongwei 于 2011-4-29 16:10 编辑
(
严重声明:不好意思,我看错啦。。。。人家这个 cosmic是非常智能的啦,,,, 做了个6次右移位,来代替一个除以64(0x40)除法运算。。。
)
我想把一个常数赋值给一个除数:
temp16=((24L*2308)/36)/24 ;
speed=SpeedAd/temp16;
这是.ls文件,它把temp16 算成了6(应该是64):
1471 ; 656 temp16=((24L*2308)/36)/24 ;
1472 ; 657 speed=SpeedAd/temp16;
1473 0320 be56 ldw x,_SpeedAd
1474 0322 a606 ld a,#6
1475 0324 L45:
1476 0324 54 srlw x
1477 0325 4a dec a
1478 0326 26fc jrne L45
1479 0328 01 rrwa x,a
1480 0329 b75d ld _speed,a
如果我把24L改成25L,temp16数值就准确了:
temp16=((25L*2308)/36)/24 ;
speed=SpeedAd/temp16;
1471 ; 656 temp16=((25L*2308)/36)/24 ;
1472 ; 657 speed=SpeedAd/temp16;
1473 0320 be56 ldw x,_SpeedAd
1474 0322 90ae0042 ldw y,#66
1475 0326 65 divw x,y
1476 0327 01 rrwa x,a
1477 0328 b75d ld _speed,a
各位,这是怎么回事呢?我写的格式有问题吗 |