1.邏輯運算指令的一般性說明
與、或、異或的邏輯運算指令可以Acc或direct為目標。但是以direct為目標時,另一操作數只能是Acc或立即數。
與、或、異或是對位邏輯運算。
其他邏輯運算指令只對Acc操作。
小循環(huán)不影響Cy,大循環(huán)Cy在循環(huán)圈內。
除了RLC和RRC,邏輯運算指令不影響P以外的標志位。
2.與、或、異或的特殊用途
用ANL指令屏蔽指定位
例:ANLA,#0FH;屏蔽高4位
用ORL指令將指定位置1
例:ORLA,#0FH;將低4位置1
用ORL指令拼接一個字節(jié)
例:ANLA,#0FH
ANLB,#0F0H
ORLA,B
用XRL指令將指定位取反
例:XRLA,#55H;將D0、D2、D4、D6等位取反
3.循環(huán)移位指令的應用
除法運算
左移=無符號數乘2,右移=有符號數除2。
例:A×B,積存(BA)
算法:乘數在(A),積在(R2)(A)。
1)(A)右移一位;
2)(A)移出的一位若為1,則(R2)+被乘數(B);
3)積(R2)(A)雙字節(jié)右移一位;第2、3步循環(huán)8次。
為簡化,假定為4位,循環(huán)4次。(A)=1011, (B)=1111
MOVR2,#0
MOVR3,#8
CLRC
RRCA
LP:XCHA,R2
JNCRRR
ADDA,B
RRR:RRCA
XCHA,R2;①
RRCA;②
DJNZR3,LP
MOVB,R2
下表第一列為:循環(huán)次數-執(zhí)行點
其余各列為執(zhí)行點的操作結果。
邏輯尺
以二進制數表示二值邏輯序列,逐位移出,并據此行邏輯控制。