逻辑运算类指令 包括与、或、非、异或、清0及移位等共24条;一般不影响PSW中的标志位;助记符有:ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9种。 一、逻辑与指令 ANL A,Rn ;A←(A)∧( Rn) ANL A,direct;A←(A)∧(direct) ANL A,@Ri ;A←(A)∧(( R)) ANL A,#data;A←(A)∧data ANL direct,A; direct ←(direct)∧(A) ANL direct, #data ; direct ←(direct)∧data 功能(1)前4条是A的内容与源操作数所指出的内容进行按位逻辑与运算其结果仍送回A中,仅影响PSW中的P标志位;(2)后两条指令是将直接地址direct单元中的内容和A或立即数按位进行逻辑与运算,其结果仍送回direct单元中。 作用:用于对某些位清“0”,其它位不变。(例3-27)
逻辑或运算类指令 ORL A,Rn ;A←(A)∨( Rn) ORL A,direct;A←(A)∨(direct) ORL A,@Ri ;A←(A)∨ (( R)) ORL A,#data;A←(A)∨data ORL direct,A; direct ←(direct)∨(A) ORL direct, #data ; direct ←(direct)∨data 功能(1)前4条是A的内容与源操作数所指出的内容进行按位逻辑或运算其结果仍送回A中,仅影响PSW中的P标志位;(2)后两条指令是将直接地址direct单元中的内容和A或立即数按位进行逻辑或运算,其结果仍送回direct单元中。 作用:用于对某些位置“1”,其它位不变。(例3-28、例3-29)
逻辑异或运算类指令 XRL A,Rn ;A←(A)( Rn) XRL A,direct;A←(A)(direct) XRL A,@Ri ;A←(A) (( R)) XRL A,#data;A←(A) data XRL direct,A; direct ←(direct)(A) XRL direct, #data ; direct ←(direct) data 功能(1)前4条是A的内容与源操作数所指出的内容进行按位逻辑异或运算其结果仍送回A中,仅影响PSW中的P标志位;(2)后两条指令是将直接地址direct单元中的内容和A或立即数按位进行逻辑异或运算,其结果仍送回direct单元中。 作用:用于对某些位置“1”,其它位不变。(例3-30、例3-31)
累加器清零和取反指令 1、清0指令 2、取反指令 CRL A;A←0 功能:将A清0,不影响标志位Cy、Ac、Ov,但P=0。 CPL A;A←A 功能:将A的内容按位取反,再送回累加器A中。不影响标志位Cy、Ac、 Ov及P。 例:设(A)=35H,执行指令 CPL A 后(A)=0CAH
累加器A循环移位指令 1、不带进位循环左移指令 RL A;Ai+1←Ai,A0←A7,i=0~7 功能:把A中的内容左循环1位,位A7循环移入A0。 2、带进位循环左移指令 RLC A; Ai+1←Ai, A0 ← Cy ,Cy← A7 功能:把A中的内容和Cy 一起左循环一位, Cy移入A0,位A7循环移入Cy。(循环左移一位相当于乘2操作) 3、不带进位循环右移指令 RR A;Ai←Ai+1,A7←A0,i=0~7 把A中的内容右循环1位,位A0循环移入A7。 4、带进位循环右移指令 RRC A;Ai←Ai+1,A7← Cy, Cy ← A0 ,i =0~7 功能:把A中的内容和Cy 一起右循环一位, Cy移入A7,位A0循环移入Cy。(循环右移一位相当于除2操作)
位操作指令 指令特点:1、位操作指令的操作数不是字节而是字节中的某一位,每位取值只能是0或1;2、用进位CY作累加器,称为位累加器,简写为C;3、操作对象是内部RAM位寻址区(20H~2FH)的连续128位以及SFR中可以进行位寻址的各位;4、涉及到的助记符:MOV、CLR、CPL、ANL、ORL、JC、JNC、JB、JNB、JBC。 主讲:吴政江
一、位传送指令 MOV C,bit;C←(bit), bit为位地址 MOV bit,C; bit ←(C) 注意:只能在位地址表示的位单元和位累加器C之间传送。两个位存储单元之间不能直接传送,必须通过CY作桥梁。 例:把P1.0的状态传送到P1.6。 MOV C, P1.0;C ←( P1.0) MOV P1.6 ,C ; P1.6 ←C 例3-27、例3-38
位置位和清零指令 CLR C; CY ←0 CLR bit; bit ←0 SETB C; CY ←1 SETB bit; bit ←1 功能:把进位标志位CY和位地址bit中的内容清0或置1。 例:CLR 20H SETB 25H
位逻辑运算指令 ANL C, bit; C ←C∧( bit) ANL C, /bit; C ←C∧( bit) ORL C, bit; C ←C∨( bit) ORL C, /bit; C ←C∨( bit) CPL C;C ←C CPL bit; bit ← (bit) 说明:除最后一条指令外,都以CY 为目的操作数,“/bit”表示将位单元bit的内容取反后再运算。 例:已知X、Y、Z为三个位地址,说明下段程序的功能。 MOV C,Y ANL C,/Y ANL C,/X ORL C,Z MOV Z,C MOV Z,C MOV C,X
判位转移指令 是条件转移指令,它以进位标志CY 或位地址bit的内容为转移的判断条件。 JC rel;若( CY)=1,则PC=(PC)+2+ rel, ;否则, PC=(PC)+2 JNC rel;若( CY)=0,则PC=(PC)+2+ rel, JB bit, rel;若( bit)=1,则PC=(PC)+3+ rel, ;否则, PC=(PC)+3 JNB bit, rel;若( bit)=0,则PC=(PC)+3+ rel, JBC bit, rel;若( bit)=1,则PC=(PC)+3+ rel, ;且( bit) ←0,否则, PC=(PC)+3 例3-40