对标志位的影响:逻辑运算和移位指令中除了两条带进位的循环移位指令外,其余均不影响psw中的各标志位。但当目的操作数是累加器a时,影响psw中的奇偶校验位p。
常用的逻辑运算和移位类指令有逻辑与、逻辑或、逻辑异或、循环移位、清0、求反(非)等24条指令,它们的操作数都是8位的。逻辑运算都是按位进行的,除用于逻辑运算外,还可用于模拟各种数字逻辑电路的功能,进行逻辑电路的设计。
1.逻辑与运算指令(6条)
功能:实现两个操作数的逻辑与。
指令格式:
其中,<src>包括rn、@ri、direct、#data。
anl direst,<src>
其中,<src>包括a、#data。
适用场合:实现逻辑与,主要用于使操作数的某些位不变(这些位与“1”),某些位置0(这些位与“0”)。
2.逻辑或运算指令(6条)
功能:实现两个操作数的逻辑或。
指令格式:
其中,<src>包括rn、@ri、direct、#data。
orl direst,<src>
其中,<src>包括a、#data。
适用场合:实现逻辑或,主要用于使操作数的某些位不变(这些位或“0”),某些位置1(这些位或“1”)。
3.逻辑异或运算指令(6条)
功能:实现两个操作数的逻辑异或。(www.xing528.com)
指令格式:
其中,<src>包括rn、@ri、direct、#data。
xrl direst,<src>
其中,<src>包括a、#data。
适用场合:实现逻辑异或,主要用于使操作数的某些位不变(这些位异或“0”),某些位取反(这些位异或“1”)。
4.循环移位指令(4条)
mcs51系列单片机的循环移位指令共有不带进位的循环左、右移位(操作码为rl,rr)和带进位的循环左、右移位(操作码为rlc,rrc)指令4条。
特点:只能对累加器a进行循环移位。
指令格式:操作码a
功能:累加器a中的数据逐位左移一位相当于原内容乘2,而逐位右移一位相当于原内容除以2。循环移位指令示意图如图32所示。
5.累加器清0与取反指令(2条)
指令格式:
特点:可以节省存储空间,提高程序执行效率。
对标志位的影响:clr a指令只影响psw的p标志位,cpl a指令不影响psw各标志位。
图3-2 累加器移位指令示意图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。