1、2.3.3 逻辑运算指令逻辑运算包括逻辑“与”、“或”、“异或”及“非”运 算。逻辑运算都是按位进行的。一、逻辑“与”运算指令逻辑“与”运算用符号表示,逻辑“与”运算指令有6 条:ANL A,Rn ;A(A)(Rn)ANL A,direct;A(A)(direct)ANL A, Ri;A(A)(Ri)ANL A, #data ;A(A)dataANL direct, A;direct(direct)(A)ANL direct, #data ;direct(direct)data,以A作为目的操作数,以direct 作为目的 操作数,当需要只改变数据的某几位而其余位不变时,不 能使用直接传送方式
2、,只能通过逻辑运算完成。 例:将累加器A的低4位传送到P1口的低4位,但P1口 的高4位保持不变。 答案: MOV R0,A ANL A,#0FH ANL P1,#0F0H ADD A,P1 MOV P1,A MOV A,R0,二、逻辑“或”运算指令组逻辑“或”运算逻辑“与”运算指令形式相似。逻 辑“或”运算指令用符号表示。ORL A,Rn ;A(A)(Rn)ORL A,direct;A(A)(direct)ORL A, Ri;A(A)(Ri)ORL A, #data ;A(A)dataORL direct, A ;direct(direct)(A)ORL direct, #data ;dir
3、ect(direct)data,三、逻辑“异或” 指令组逻辑“异或”运算指令也包括6条:XRL A,RnXRL A,directXRL A, RiXRL A, #data XRL direct, AXRL direct, #data,例:用一条指令实现将P1锁存器的内容高4位保持不 变,低4位按位求反.答案:XRL P1,#0FH,四、累加器清零、取反指令,1、 累加器清零指令CLR A;A00H 2、 累加器取反指令CPL A;AA按位取反,五、移位指令组,80C51的移位指令只能对累加器A进行移位操 作。包括循环(小循环)移位指令和带进位循环(大 循环)移位指令。,1、循环左移指令 RL
4、A,2、循环右移指令 RR A,3、带进位循环左移指令 RLC A,4、带进位循环右移指令 RRC A,2.3.4 位操作指令,位操作指令的操作数是字节中的某一位,又称布尔 变量操作指令。此时,布尔处理器的累加器为CY,简 写为C。,一、位传送指令 MOV C,bit ;C(bit)MOV bit,C ;bit(C),注意:两个位之间不能直接的进行数据传送。例:把20H位的内容传至5AH位。使用指令MOV C,20H MOV 5AH,C,二、位置/复位指令,CLR C ; C0 CLR bit ; bit 0 SETB C ; C1 SETB bit ; bit 1,三、位运算指令ANL C,
5、bit ; C(C) bit(/bit),例:设并行口的P2.0P2.2与译码器连接如图所示, 欲使A中低3位送译码器进行译码操作。请编程实现 (最低位由P2.0输出)。,方法一: RRC A MOV P2.0,C RRC A MOV P2.1,C RRC A MOV P2.2,C,方法二: MOV C,ACC.0 MOV P2.0,C MOV C,ACC.1 MOV P2.1,C MOV C,ACC.2 MOV P2.2,C,方法三: MOV R0,A ANL A,#07H ANL P2,#0F8H ORL P2,A MOV A,R0,例:设M,N和W分别代表某位的位地址,编程求W=MN。答案:MOV C,NANL C,/MMOV W,CMOV C,MANL C,/NORL C,WMOV W,CSJMP $,本节小结,逻辑运算指令位操作指令,逻辑“与”运算指令 逻辑“或”运算指令 逻辑“异或”运算指令 累加器清零、取反指令 移位指令,位传送指令 位置/复位指令 位运算指令 位控制转移指令,循环左、右移位指令 带进位循环左、右移位指令,