首页 理论教育 单片机逻辑运算指令大全

单片机逻辑运算指令大全

时间:2023-10-17 理论教育 版权反馈
【摘要】:逻辑运算类指令包括与、或、异或、清零、求反、左右移位等操作指令。逻辑运算指令用到的助记符有ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9种。利用累加器循环左移指令对A中内容进行乘10操作。

单片机逻辑运算指令大全

逻辑运算类指令包括与、或、异或、清零、求反、左右移位等操作指令。这些指令对应的寻址方式有直接寻址、寄存器寻址和寄存器间接寻址。其执行时一般不影响程序状态寄存器PSW,仅当目的操作数为A时对奇偶标志P位有影响,带进位的移位指令影响CY位。逻辑运算指令用到的助记符有ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9种。

1.循环移位指令(4条)

RL A

RR A

RLC A

RRC A

该组循环移位指令执行情况如图3.1所示。

图3.1 循环移位指令执行示意图

前两条指令的功能分别是将累加器A的内容循环左移或右移一位,后两条指令的功能分别是将累加器A的内容连同进位位CY一起循环左移或右移一位。

【例3.17】利用累加器循环左移指令对A中内容进行乘10操作。设A=X,编程如下:

RL A ;得到2X

MOV B,A ;转存到B

RL A ;得到4X

RL A ;得到8X

ADD A,B ;A←(8X+2X)

2.累加器半字节交换指令(1条)

SWAP A ;A3~0↔A7~4

这条指令的功能是将累加器A的高低两半字节交换。如(A)=50H,执行SWAP A指令后,结果(A)=05H。

3.求反指令(1条)

CPL A ;A←

4.清0指令(1条)

CLR A;A←0

5.逻辑与指令(6条)

ANL A,#data ;A←(A)∧data

ANL direct,#data ;direct←(direct)∧data

ANL A,Rn ;A←(A)∧(Rn)

ANL A,direct ;A←(A)∧(direct)

ANL direct,A ;direct←(direct)∧(A)(www.xing528.com)

ANL A,@Ri ;A←(A)∧((Ri))

这组指令的第二条和第五条指令中,如果直接地址正好是I/O口,则也是进行“读-改-写”操作。

6.逻辑或指令(6条)

ORL A,#data ;A←(A)∨data

ORL direct,#data ;direct←(direct)∨data

ORL A,Rn ;A←(A)∨(Rn)

ORL A,direct ;A←(A)∨(direct)

ORL direct,A ;direct←(direct)∨(A)

ORL A,@Ri ;A←(A)∨((Ri))

同样,这组指令的第二条和第五条也具有“读-改-写”功能。

7.逻辑异或指令(6条)

XRL A,#data ;A←(A)⊕data

XRL direct,#data ;direct←(direct)⊕data

XRL A,Rn ;A←(A)⊕(Rn)

XRL A,direct ;A←(A)⊕(direct)

XRL direct,A ;direct←(direct)⊕(A)

XRL A,@Ri ;A←(A)⊕((Ri))

同样,这组指令的第二条和第五条也具有“读-改-写”功能。

【例3.18】设P1中内容为AAH,A中内容为15H,执行下列程序:

ANL P1,#0F0H ;P1=0A0H

ORL P1,#0FH ;P1=0AFH

XRL P1,A ;P1=0BAH

从上例可见,逻辑操作是按位进行的,所以“ANL”操作常用来屏蔽字节中的某些位,要保留的位用“1”去“与”,要清除的位用“0”去“与”。“ORL”操作常用来对字节中的某些位置“1”,要保留的位用“0”去“或”,要置1的位用“1”去“或”。“XRL”操作常用来对字节中的某些位求反,要保留的位用“1”去“异或”。

【例3.19】把累加器A中的低4位送到外部RAM的2000H单元中,程序为:

MOV DPTR,#2000H ;DPTR←2000H

ANL A,#0FH ;A←(A)∧0FH(屏蔽A的高4位)

MOVX @DPTR,A ;((DPTR))←A

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

我要反馈