首页 理论教育 逻辑运算类指令-单片机原理与接口技术:设计与实训

逻辑运算类指令-单片机原理与接口技术:设计与实训

时间:2023-11-16 理论教育 版权反馈
【摘要】:逻辑运算类指令有“或”操作指令、“与”操作指令、“异或”操作指令、取反与累加器清0指令、循环移位指令,共24条。MOV A,30H;取数ANL A,#0FH;屏蔽高4位MOV 40H,A;存低4位MOV A,30H;再取ANL A,#0F0H;屏蔽低4位SWAP A;高低4位交换MOV 41H,A;存高4位3 逻辑“异或”运算指令(6条)“异或”操作的用法:某位用“0”异或不变;用“1”异或该位取反,也称为“指定位取反”。这两条指令皆为单字节单周期指令。

逻辑运算类指令-单片机原理与接口技术:设计与实训

逻辑运算类指令有“或”操作指令、“与”操作指令、“异或”操作指令、取反与累加器清0指令、循环移位指令,共24条。特点是当A作为目的操作数(第一操作数)时,影响P位;带进位的移位指令影响Cy位,其余都不影响PSW。

1 逻辑“或”运算指令(6条)

按位相“或”,其中有4条指令的第一操作数都为A,另外两条指令的第一操作数为direct。

逻辑“或”指令、功能操作、机器代码和执行机器周期数见表3-14。

表3-14 逻辑“或”指令、功能操作、机器代码和执行机器周期数

978-7-111-54295-7-Chapter03-28.jpg

这组指令功能:在指出的变量之间执行以位为基础的逻辑“或”操作,结果存放到目的变量所在的寄存器或存储器中。

为了使P1口的高4位都变为1,而低4位保持不变。可以执行如下指令。

ORL P1,#0F0H;P1←(P1)∨F0H

2 逻辑“与”运算指令(6条)

指令功能是将A的内容与立即数0FH进行逻辑“与”运算。由于0FH的低4位为1111B,高4位为0000B,所以无论A中的高4位原来是何值,相“与”后,A中的高4位都将变为0000B,而A中的低4位保持不变。因此,该指令的功能是屏蔽A中的高4位,取出A中的低4位。

与ORL指令类似,都是按位“与”,其中4条指令的第一操作数为A,两条指令的第一操作数为direct。

逻辑“与”指令、功能操作、机器代码和执行机器周期数见表3-15。

表3-15 逻辑“与”指令、功能操作、机器代码和执行机器周期数

978-7-111-54295-7-Chapter03-29.jpg

这组指令在指出的变量之间以位为基础进行逻辑“与”操作,结果存放到目的变量所在的寄存器或存储器中。

PUTTl:ANL A,#0FH;屏蔽高4位

MOV @R0,A;放进显示缓冲区

例3-18:设30H单元内容为56H,将高低4位拆开。

MOV A,30H;取数

ANL A,#0FH;屏蔽高4位

MOV 40H,A;存低4位

MOV A,30H;再取

ANL A,#0F0H;屏蔽低4位

SWAP A;高低4位交换

MOV 41H,A;存高4位

3 逻辑“异或”运算指令(6条)

“异或”操作的用法:某位用“0”异或不变;用“1”异或该位取反,也称为“指定位取反”。这组指令功能在指出的变量之间执行以位为基础的逻辑“异或”操作,结果存放到目的变量所在的寄存器或存储器中。

逻辑“异或”指令、功能操作、机器代码和执行机器周期数见表3-16。

表3-16 逻辑“异或”指令、功能操作、机器代码和执行机器周期数

978-7-111-54295-7-Chapter03-30.jpg

使用逻辑“异或”指令可以令某个单元中的某些位取“反”,其余位保持不变。为了使P1口的高4位变“反”,低4位保持不变,可以执行如下指令:

XRL P1,#0F0H;P1←(P1)+F0H(www.xing528.com)

说明:逻辑运算中,“与”运算常用于对某些位清0,“或”运算常用于对某些位置1,“异或”运算常用于对某些位取反。

例如:使P1口的低2位为0,高2位取反,其余位不变。

ANL P1,#11111100B;对2位清0

XRL P1,#11000000B;对2位取反

4 简单逻辑操作指令(2条)

(1)累加器取反指令

对累加器A的内容各位求反,结果送回A中,影响P位。

功能:累加器A按位取反,不影响Cy、AC、OV等标志。

(2)累加器清0指令

将累加器A的内容清0。

功能:是对累加器A的内容取反,操作结果仍留在A中,不影响Cy、AC、OV等标志。这两条指令皆为单字节单周期指令。虽然使用数据传送或逻辑“异或”指令同样也可以达到对累加器A清0或取反的目的,但那些指令的长度为两个字节。所以完成同样的功能时,使用上述指令能使程序更为优化

取反或累加器清0指令、功能操作、机器代码和执行机器周期数见表3-17。

表3-17 取反或累加器清0指令、功能操作、机器代码和执行机器周期数

978-7-111-54295-7-Chapter03-31.jpg

注意:这两条指令仅对A有效。

5 循环移位指令(4条)

其中有两条不带Cy位的逐位循环移位一次指令,不影响PSW。有两条带Cy位的逐位循环移位一次指令,影响Cy位和P标志位。

循环移位指令、功能操作、机器代码和执行机器周期数见表3-18。

表3-18 循环移位指令、功能操作、机器代码和执行机器周期数

978-7-111-54295-7-Chapter03-32.jpg

注:这4条指令仅对A有效。

循环移位指令的操作过程如图3-13所示。

例3-19:将双字节数(R2)(R3)右移一位。

CLR C

MOV A,R2

RRC A

MOV R2,A

MOV A,R3

RRC A

MOV R3,A

978-7-111-54295-7-Chapter03-33.jpg

图3-13 循环移位指令的操作过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈