首页 理论教育 单片机逻辑运算指令及应用

单片机逻辑运算指令及应用

时间:2023-11-05 理论教育 版权反馈
【摘要】:80C51的逻辑运算指令可分为四大类:对累加器A单独进行逻辑操作,对字节变量的逻辑与、逻辑或、逻辑异或操作。

单片机逻辑运算指令及应用

80C51的逻辑运算指令可分为四大类:对累加器A单独进行逻辑操作,对字节变量的逻辑与、逻辑或、逻辑异或操作。指令中的操作数都是8位,它们在进行逻辑运算操作时都不影响除奇偶标志外的其他标准位。其中逻辑与、逻辑或、逻辑异或操作指令可以实现对某些字节变量的清零、置1、取反功能。

1.对累加器A单独进行的逻辑操作

1)清零、取反与半字节交换指令(见表3-20)

表3-20 清零、取反与半字节交换指令

978-7-111-44921-8-Chapter03-35.jpg

清零指令是将累加器A中的所有位全部置0。

取反指令是将累加器A中的内容按位取反,即原来为1变为0,原来为0变为1。

半字节交换指令是将累加器A的两个半字节(高4位和低4位)内容交换。

2)循环移位指令(见表3-21)

表3-21 循环移位指令

978-7-111-44921-8-Chapter03-36.jpg

“RL A”和“RLC A”指令都使A中的内容逐位左移一位,但RLC A将使CY连同A的内容一起左移循环,A7进入CY,CY进入A0

“RR A”和“RRC A”指令的功能类似“RL A”和“RLC A”,仅是A中数据移位的方向向右。

【例3-33】 若A=24H,执行“RL A”后,A=48H。

若A=24H,CY=1,执行“RLC A”后,A=49H,CY=1。

若A=24H,执行“RR A”后,A=12H。

若A=24H,CY=1,执行“RRC A”后,A=92H。

2.逻辑与运算指令(见表3-22)

表3-22 逻辑与运算指令

978-7-111-44921-8-Chapter03-37.jpg(www.xing528.com)

这组指令的功能是进行逻辑与运算,前4条指令的功能是把源操作数与累加器A的内容相与,结果送入目的操作数A中;后2条指令的功能是把源操作数与直接地址指定的单元内容相与,结果送入直接地址指定的单元。

通过逻辑与运算指令的功能可以实现一个字节里面的某些位清零(与0相与)和某些位不变的效果(与1相与)。

【例3-34】 已知寄存器R5=59H,把R5内容的低4位清零,高4位保持不变。

MOV A,R5

ANL A,#0F0H;高4位都与1相与达到不变效果,低4位都与0相与达到清零效果

MOV R5,A

3.逻辑或运算指令(见表3-23)

表3-23 逻辑或运算指令

978-7-111-44921-8-Chapter03-38.jpg

这组指令的功能是进行逻辑或运算,前4条指令的功能是把源操作数与累加器A的内容相或,结果送入目的操作数A中;后2条指令的功能是把源操作数与直接地址指定的单元内容相或,结果送入直接地址指定的单元。

通过逻辑或运算指令的功能可以实现一个字节里面的某些位置1(与1相或)和某些位不变的效果与0相或)。请读者分析一下如果把【例3-34】中的与运算指令换成或运算指令会出现什么样的结果?

4.逻辑异或指令(见表3-24)

表3-24 逻辑异或指令

978-7-111-44921-8-Chapter03-39.jpg

(续)

978-7-111-44921-8-Chapter03-40.jpg

这组指令的功能是进行逻辑异或运算,前4条指令的功能是把源操作数与累加器A的内容相异或,结果送入目的操作数A中;后2条指令的功能是把源操作数与直接地址指定的单元内容相异或,结果送入直接地址指定的单元。

这些逻辑运算指令,除了带进位位Cy循环移位指令只影响Cy和P标志位外,其余的逻辑运算都不会影响PSW的各标志位。

通过逻辑异或运算指令的功能可以实现一个字节里面的某些位取反1(与1相异或)和某些位不变的效果与0相异或)。请读者分析一下如果把【例3-34】中的与运算指令换成异或运算指令会出现什么样的结果?

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

我要反馈