逻辑与指令
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