1. 逻辑运算指令的一般性说明* 与、或、异或的逻辑运算指令可以Acc或direct为目标。但是以direct为目标时,另一操作数只能是Acc或立即数。* 与、或、异或是对位逻辑运算。* 其他逻辑运算指令只对Acc操作。* 小循环不影响Cy,大循环Cy在循环圈内。* 除了RLC和RRC,逻辑运算指令不影响P以外的标志位。
2. 与、或、异或的特殊用途* 用ANL指令屏蔽指定位例:ANL A,#0FH ;屏蔽高4位* 用ORL指令将指定位置1例:ORL A,#0FH ;将低4位置1* 用ORL指令拼接一个字节例:ANL A,#0FHANL B,#0F0HORL A,B* 用XRL指令将指定位取反例:XRL A,#55H ;将D0、D2、D4、D6等位取反
表 3-4 逻辑运算指令操作码目标操作数参与运算的操作数说 明ANLARn; direct; @Ri; # data逻辑与directA; # dataORLARn; direct; @Ri; # data逻辑或directA; # dataXRLARn; direct; @Ri; # data逻辑异或directA; # dataCPLA―累加器(A)取反CLRA―累加器(A)清零
RLA(A)左小循环,不影响Cy
RLCA← (A)左大循环
RRA(A)右小循环,不影响Cy
RRCA→ (A)右大循环3. 循环移位逻辑运算指令的应用* 乘除法运算左移=无符号数乘2,右移=有符号数除2。例:A×B,积存(BA)算法:乘数在(A),积在(R2)(A)。1) (A)右移一位;2) (A)移出的一位若为1,则(R2)+被乘数(B);3) 积(R2)(A)双字节右移一位;第2、3步循环8次。为简化,假定为4位,循环4次。(A)=1011, (B)=1111
MOV R2,#0MOV R3,#8CLR CRRC ALP:XCH A,R2JNC RRRADD A,B RRR:RRC AXCH A,R2 ;①RRC A ;②DJNZ R3,LPMOV B,R2下表第一列为:循环次数-执行点其余各列为逻辑运算指令执行点的操作结果。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。