逻辑运算指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逻辑运算指令
1.ANL类指令(6条)
ANL类是逻辑与指令,其功能是将源操作数作数内容和目的操作数内容按位相“与”,结果存入目的操作数指定单元中,源操作数不变。
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)
例设A=F6H,(30H)=0FH
执行 ANL A, 30H ;A∩ (30H) →A
操作如下:
11110110 (F6H)
∩ 00001111 (0FH)注意:按位相“与”
00000110 (06H)
结果:A=06H, 30H地址内容不变,即(30H)=0FH
若执行ANL 30H, A ;(30H)∩ A→(30H)
操作同上,结果放在30H地址中,A中内容不变,即(30H)=06H, A=F6H。
2.ORL类指令(6条)
ORL类指令是逻辑或指令,其功能是将源操作数作数内容和目的操作数内容按位逻辑“或”,结果存入目的操作数指定单元中,源操作数不变。
ORL A, Rn ;A∪Rn→A
ORL A,direct ;A∪(direct) →A
ORL A, @Ri ;A∪(Ri) →A
ORL A, #data ;A∪data→A
ORL direct, A ;(direct)∪A→(direct)
ORL direct, #data ;(direct)∪data→(direct)
“或”运算和“与”运算过程类似,这里不再举例。
3.XRL类指令(6条)
XRL类是异或指令,其功能是将两个操作数指定内容按位“异或”,结果存于目的操作数指定单元中。“异或”原则是相同为“0”,相异为“1”。
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)
例(50H)=05H
执行 XRL 50H, #06H ;(50H)⊕06H→(50H)
操作如下:
00000101 (05H)
⊕ 00000110 (06H)
00000011 (03H)
结果:(50H)=03H
4.循环移位指令(4条)
循环移位指令的功能是将累加器A中内容循环位移或者和进位位一起移位。
RL A ;A中内容循环左移,执行本指令一次左移一位,操作如下:
A.7←A.6←A.5←A.4←A.3←A.2←A.1←A.0
RR A
A.7→A.6→A.5→A.4→A.3→A.2→A.1→A.0
RLC A ;A与Cy内容一起循环左移一位,操作如下:
A.7←A.6←A.5←A.4←A.3←A.2←A.1←A.0
Cy
RRC A ;A与Cy内容一起循环右移一位,操作如下:
例 A=01H, Cy=1
若执行一次 RRC A后,结果为:A=10000000B Cy=1
若执行一次 RLC A后,结果为:A=00000011B Cy=0
5.取反、清0指令
CPL A ;累加器内容按位取反。如果1就变0,如果0就变1 CLR A ;累加器A清0