本帖最后由 allen 于 2018-1-25 16:34 编辑

前期回顾:
第1课:单片机简叙
第2课:单片机引脚介绍
第3课:单片机存储器结构
第4课:第一个单片机小程序
第5课:单片机延时程序分析
第6课:单片机并行口结构
第7课:单片机的特殊功能寄存器
第8课:单片机寻址方式与指令系统
第9课:单片机数据传递类指令
第10课:单片机数据传递类指令(补充)
第11课:单片机算术运算指令

第12课:单片机逻辑运算类指令
逻辑与指令
ANL     A,Rn ;A与Rn中的值按位'与',结果送入A中
ANL     A,direct;A与direct中的值按位'与',结果送入A中
ANL     A,@Ri;A与间址寻址单元@Ri中的值按位'与',结果送入A中
ANL     A,#data;A与立即数data按位'与',结果送入A中
ANL     direct,A;direct中值与A中的值按位'与',结果送入direct中
ANL     direct,#data;direct中的值与立即数data按位'与',结果送入direct中。
这几条指令的关键是知道什么是逻辑与。这里的逻辑与是指按位与
例:71H和56H相与则将两数写成二进制形式:
(71H) 01110001
(56H) 00100110
结果 00100000 即20H,从上面的式子可以看出,两个参与运算的值只要其中有一个位上是0,则这位的结果就是0,两个同是1,结果才是1。
理解了逻辑与的运算规则,结果自然就出来了。看每条指令后面的注释
下面再举一些例子来看。
MOV     A,#45H;(A)=45H
MOV     R1,#25H;(R1)=25H
MOV     25H,#79H;(25H)=79H
ANL     A,@R1;45H与79H按位与,结果送入A中为 41H (A)=41H
ANL     25H,#15H;25H中的值(79H)与15H相与结果为(25H)=11H)
ANL     25H,A;25H中的值(11H)与A中的值(41H)相与,结果为(25H)=11H
在知道了逻辑与指令的功能后,逻辑或和逻辑异或的功能就很简单了。逻辑或是按位“或”,即有“1”为1,全“0”为0。例:
10011000
或 01100001
结果 11111001
而异或则是按位“异或”,相同为“0”,相异为“1”。例:
10011000
异或 01100001
结果 11111001
而所有的或指令,就是将与指仿中的ANL 换成ORL,而异或指令则是将ANL   换成XRL。即
或指令:
ORL     A,Rn        ;A和Rn中的值按位'或',结果送入A中
ORL     A,direct;A和与间址寻址单元@Ri中的值按位'或',结果送入A中
ORL     A,#data;A和立direct中的值按位'或',结果送入A中
ORL     A,@Ri;A和即数data按位'或',结果送入A中
ORL     direct,A;direct中值和A中的值按位'或',结果送入direct中
ORL     direct,#data;direct中的值和立即数data按位'或',结果送入direct中。
异或指令:
XRL     A,Rn        ;A和Rn中的值按位'异或',结果送入A中
XRL     A,direct;A和direct中的值按位'异或',结果送入A中
XRL     A,@Ri;A和间址寻址单元@Ri中的值按位'异或',结果送入A中
XRL     A,#data;A和立即数data按位'异或',结果送入A中
XRL     direct,A ;direct中值和A中的值按位'异或',结果送入direct中
XRL     direct,#data;direct中的值和立即数data按位'异或',结果送入direct中。
练习:
MOV     A,#24H
MOV     R0,#37H
ORL         A,R0
XRL         A,#29H
MOV     35H,#10H
ORL         35H,#29H
MOV     R0,#35H
ANL     A,@R0

未完....

来源:单片机教程网