有时候需要一个IO输出口取反,状态翻转一次,以前采用判断的方法,判断当前是高就输出低,是低输出高。多浪费几条指令,还要跳转。改用异或指令,只需要2条。
例如,需要驱动一个口发声,进入中断之后取反。
;----------定义-----------------
BMusic euq 0x03
PortBMusic equ port7
;---------取反操作--------------
mov a,@(1<<BMusic)
xor PortBMusic,a
;----------------------------------
用户71143 2007-5-16 17:01
我得到了一个启示:要学会运用逻辑指令
具体到这儿就是:位运算更要多考虑逻辑指令