ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR
3.4.1 逻辑“与”运算指令ANL

ANL指令用于执行逻辑"与"运算。它可以对累加器A与直接数据、内部RAM或外部RAM进行按位与运算,结果存回累加器A。也可以对位地址与进位位C进行与运算。
ANL指令的主要格式:
示例程序:
对字节进行与操作,不影响标志位(除了P);
对标志位C进行逻辑运算时,运算结果会直接存回标志位C中。
3.4.2 逻辑“或”运算指令ORL
ORL指令用于执行逻辑"或"运算。它可以对累加器A与直接数据、内部RAM或外部RAM进行按位或运算,也可以对位地址与进位位C进行或运算。
ORL指令的主要格式:
ORL A, <src>
:将累加器A与源操作数进行或运算,结果存回A- 例如:
ORL A, R0
、ORL A, #data
、ORL A, @Ri
ORL <dst>, A
:将目标操作数与累加器A进行或运算,结果存回目标位置- 例如:
ORL P1, A
、ORL 30H, A
ORL <dst>, #data
:将目标操作数与立即数进行或运算,结果存回目标位置- 例如:
ORL P1, #55H
、ORL 30H, #55H
示例程序:
指令执行过程中会影响PSW中的进位标志位C(仅位操作时)。
3.4.3 逻辑“异或”运算指令XRL
XRL指令用于执行逻辑"异或"运算。它可以对累加器A与直接数据、内部RAM或外部RAM进行按位异或运算,结果存回累加器A。
XRL指令的主要格式:
示例程序:
3.4.4 累加器移位/循环指令
包括带进位C和不带进位C的循环左移和循环右移等4条指令
1. 循环右移指令RR
RR指令用于将累加器A的内容向右循环移位1位,最低位移入最高位。指令格式:
示例说明:
指令执行过程中不影响任何标志位。
2. 带进位的循环右移指令RRC
RRC指令用于将累加器A的内容和进位标志C一起向右循环移位1位。进位C移入最高位,最低位移入进位C。(此时相当于C成为了最低位)指令格式:
示例说明:
指令执行过程中会影响PSW中的进位标志位C。
3. 循环左移指令RL
RL指令用于将累加器A的内容向左循环移位1位,最高位移入最低位。指令格式:
示例说明:
指令执行过程中不影响任何标志位。
4. 带进位的循环左移指令RLC
RLC指令用于将累加器A的内容和进位标志C一起向左循环移位1位。进位C移入最低位,最高位移入进位C。(此时相当于C成为了最高位)指令格式:
示例说明:
指令执行过程中会影响PSW中的进位标志位C。

3.4.5 累加器按位取反指令CPL
CPL指令用于将累加器A或位变量的内容按位取反。对累加器A进行操作时,将累加器A中的每一位取反。对位变量操作时,将指定位变量的值取反。
CPL指令的主要格式:
示例程序:
指令执行过程中仅在位操作时会影响PSW中的进位标志位C。
3.4.6 累加器清零指令CLR
CLR指令用于将累加器A或位变量的内容清零。对累加器A进行操作时,将累加器A中的所有位都置为0。对位变量操作时,将指定位变量的值置为0。
CLR指令的主要格式:
示例程序:
指令执行过程中仅在位操作时会影响PSW中的进位标志位C。