MOVF F,F ;把F的内容移入F,实质是什么也没做,主要用于影响Z标志位以判断F是否为0
NE5532 发表于 2010-9-14 19:22 
这个说法有局限性,MOVF,F,F这个指令用在一般的寄存器时没有任何问题,但用在STATUS、TMRX 时有很大影响
比如,当STATUS 为0 时,执行完 MOVF STATUS,F 或者 MOVF STATUS,W 之后,STATUS 的 Z 就会变为 1,这就是为什么在中断中保护现场时 对 STATUS 的操作要用SWAP 指令的原因
而当操作对象为TMRx时,就相当于给TMRx 又赋值一次,这个操作会导致 TMRx 的计数停止两个周期,从而导致 TMRx 计数不准确。因此在判断 TMRx是否为0时,就不能用 MOVF TMRx,F 这样的操作,而应该是 MOVF TMRx,W 这样的操作。
|