编辑: hgtbkwd | 2016-06-11 |
9,加6调整 (1)
1110 0100
110 ;
高4位>
9,加60H调整 (1)
0100 0100运算结果为(A)=44H,Cy=1 即十进制的144. * 2. 减法指令 SUBB A,源操作数;
带借位减法指令 SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data 影响:Cy、OV、AC、P 例:A= 5AH,R2= 5AH,Cy= 0,执行下列指令SUBB A,R2求:A= 00,Cy=0,OV=0,P=0,AC= 0? * 例:设(A)=0C9H,(R0)=60H,(60H)=54H,Cy=1,执行指令:SUBB A,@R0 结果为 (A)=74H 标志位为Cy=0,0V=1,AC=0,P=0
1110 100 借位
1100 1001 (A)
0101 0100 ((R0)1 Cy
0111 0100 * 3. 增量、减量指令 增量指令:INC 单操作数 INC A INC Rn INC direct INC @Ri INC DPTR 除对A操作影响标志位P以外,不影响标志位状态. * 减量指令:DEC 单操作数 DEC A DEC direct DEC @Ri DEC Rn 除对A操作影响标志位P以外,不影响标志位状态.注意:没有指令 DEC DPTR 可用指令 DEC DPL 代替 * 3.5.2. 乘除指令 MUL AB;
BA←A*B,Cy←0,;
当积高字节B=0,OV←0;
B≠0,则OV←1 DIV AB ;
A÷B,A←商,B←余数,Cy←0,;
当除数B=0,OV←1;
B≠0,则OV←0 例: A= 96(60H), B= 192(0C0H),执行指令 MUL AB 后,求:A= ,B= ,Cy= ,OV= ,P= ? 解:
96 *192 = 18432(4800H) 例:A= 156(F6H),B= 13(0DH),执行指令 DIV AB后求:A= ,B= ,Cy= ,OV= ,P= 解:
156 ÷
13 = 18(12H),余数= 12(0CH). * 3.6 逻辑运算指令
一、单操作数指令(A累加器为操作数)1. A清0指令: CLR A ;
A←02. A取反指令:CPL A ;
A←/A 3. 循环移位指令: 1)8位循环指令: RL A ;
A循环左移一位 RR A ;
A循环右移一位 2)9位循环指令: RLC A;
带Cy循环左移一位 RRC A;
带Cy循环右移一位 * 例:设A= 11000101,Cy= 0,分别执行下列单条指令: CPL A ;
A=Cy= RL A ;
A=Cy= RLC A ;
A=Cy=
00111010 0
10001011 0
10001010 1 * 用9位循环指令实现多字节移位 例:编程将寄存器 R6R5 中的双字节数X左移一位.
0 Cy R6 R5 Cy CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A ;
Cy=0, 设R6= 55H ,R5= AAH;
R6=01010101,R5=10101010,Cy=0;
R6=01010101,R5=01010100,Cy=1;
R6=10101011,R5=01010100,Cy=0 *
二、双操作数逻辑运算指令(对位逻辑运算):ANL、ORL、XRL 例: A=01******B,*表示随机状态,为1或0,执行 下述一组指令执行后A的值如何? ANL A,#0E7H;
将累加器A的内容D
4、D3清0 ORL A,#03H;
将累加器A的内容D
1、D0置1XRL A,#0C0H;
将累加器A的内容D
7、D6取反 解:执行上述指令后,A=10*00*11B. * 3.6.1 逻辑或指令(6条) ORL A,Rn ;
A∨Rn→AORL A,direct ;
A∨(direct)→AORL A,@Ri ;
A∨(Ri)→AORL A,#data;
A∨data→AORL direct,A;
(direct)∨A→(direct)ORL direct,#data ;
(direct)∨data→(direct) 影响P标志 例:71H和56H相或:01110001 (71H) ∨)
01010110 (56H)
01110111 即77H 后两条指令,若直接地址为I/O端口,则为 读-改写 操作. * 3.6.2 逻辑与指令 (6条) ANL A,Rn ;
A∧Rn→AANL A,direct ;
A∧(direct)→AANL A,@Ri ;
A∧(Ri)→AANL A,#data ;
A∧data→AANL direct,A ;
(direct)∧A→(direct)ANL direct,#data ;
(direct)∧data→(direct) 影响P标志 例:71H和56H相与:01110001 (71H) ∧)01010110 (56H)
01010000 即50H 后两条指令,若直接地址为I/O端口,则为 读-改写 操作. * 例:71H和56H相异或:
01110001 (71H)01010110 (56H) 3.6.3 逻辑异或指令(6条) XRL A,Rn ;
A ?Rn→AXRL A,direct ;
A ?(direct)→AXRL A,@Ri ;
A ?(Ri)→AXRL A,#data ;
A ? data→AXRL direct,A ;
(direct) ?A→(direct)XRL direct,#data ;
(direct) ?data→(direct) 影响P标志
00100111 即27H 后两条指令,若直接地址为I/O端口,则为 读-改写 操作. * 3.6 位操作指令