马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
逻辑与指令 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 |