13、单片机逻辑与或异或指令详解
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
评论
查看更多