单片机逻辑与或异或指令详解(1)
逻辑与指令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)=45HMOV R1,#25H;(R1)=25HMOV 25H,#79H;(25H)=79HANL A,@R1;45H与79H按位与,结果送入A中为 41H (A)=41HANL 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,#24HMOV R0,#37HORL A,R0XRL A,#29HMOV 35H,#10HORL 35H,#29HMOV R0,#35HANL A,@R0 谢谢分享 这个学习一下,谢谢分享!! 汇编,估计没什么人愿意学了,能学下去的都不是一般人。 :):handshake:victory:
页:
[1]
2
