逻辑运算的特点是按位进行。逻辑运算包括与、或、异或三类,每类都有6条指令。此外还有移位指令及对累加器A清零和求反指令,逻辑运算及移位类指令共有24条。
1.逻辑“与”运算指令
这组指令中前4条指令是将累加器A的内容和源操作数所指出的内容按位相与,结果存放在累加器A中。后两条指令是将直接地址单元中的内容和源操作数所指出的内容按位相与,结果存入直接地址所指定的单元中。逻辑与运算指令常用于将某些位屏蔽(即使之为零),方法是将要屏蔽的位和“0”相与,要保留的位同“1”相与。例如:
(A)=07H,(R0)=0FDH,执行指令:ANL A,R0
运算式为:
结果为:(A)=05H
2.逻辑“或”运算指令
这组指令中前4条指令是将累加器A的内容与源操作数所指出的内容按位相或,结果存放在累加器A中。后两条指令是将直接地址单元中的内容与源操作数所指出的内容按位相或,结果存入直接地址所指定的单元中。逻辑或运算指令常用于将某些位置位(即使之为1),方法是将要置位的位和“1”相或,要保留的位同“0”相或。
3.逻辑异或运算指令
这组指令中前4条指令是将累加器A的内容和源操作数所指出的内容按位异或运算,结果存放在累加器A中。后两条指令是将直接地址单元中的内容和源操作数所指出的内容按位异或运算,结果存入直接地址所指定的单元中。逻辑异或运算指令常用于将某些位取反。方法是:将需求反的位同“1”相异或,要保留的位同“0”相异或。
4.累加器清零、取反指令
1)累加器清零指令:
CLR A
2)累加器按位取反指令:
CPL A
清零和取反指令只有累加器A才有,它们都是一个字节指令,如果用其他方式来达到清零或取反的目的,则都为二字节的指令。
MCS-51系列单片机只有对累加器A的取反指令,没有求补指令。若要进行求补操作,可按“求反加1”来进行。以上所有的逻辑运算指令,对Cy、Ac和OV标志都没有影响,只在涉及累加器A时才会影响奇偶标志P。
5.循环移位指令(www.daowen.com)
MCS-51系列单片机的移位指令只能对累加器A进行移位,共有循环左移、循环右移带进位的循环左移和右移4种:
1)循环左移:
RL A
这条指令的功能是把累加器A的8位向左循环移位,位ACC.7循环移入位ACC.0,不影响标志位。
2)循环右移:
RR A
这条指令的功能是把累加器A的8位向右环移一位,位ACC.0进入位ACC.7,不影响其他标志位。
3)带进位循环左移:
RLC A
这条指令的功能是将累加器A的内容和进位标志位Cy一起向左环移一位,ACC.7移入进位位Cy,Cy的内容移入ACC.0,不影响其他标志位。
4)带进位循环右移:
RRC A
这条指令的功能是把累加器A的内容和进位标志位Cy一起向右环移一位,ACC.0进入Cy,Cy的内容移入ACC.7。
图3-7是上述指令的示意图。
图3-7 移位指令示意图
(a)RL A指令;(b)RR A指令;(c)RLC A指令;(d)RRC A指令
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。