0101 0001 (direct)←(direct)-1
direct DEC direct ; DEC @Ri
;
0001 011i ((Ri))←((Ri))-1
这组指令的功能是将指令的变量减1。若原来为00H,减1后下溢为0FFH,不影响标志位。
当指令DEC direct中的直接地址direct为P0~P3端口(即80H、90H、A0H、B0H)时,指令可用来修改一个输出口的内容,也是一条具有读-修改-写功能的指令。指令执行时,首先读入端口的原始数据,在CPU中执行减1操作,然后再送到端口。注意:此时读入的数据是来自端口的锁存器而不是从引脚读入。
例如:(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令:
DEC A DEC R7
; (A)←(A)-1 ; (R7)←(R7)-1
DEC 30H ; (30H)←(30H)-1 DEC @R1
; ((R1))←((R1))-1
结果:(A)=0EH;(R7)=18H;(30H)=0FFH;(40H)=0FEH;不影响标志。 另外,虽然“INC A”和“ADD A,#01H”这两条指令都是将累加器A的内容加1,但后者对进位标志产生影响。
例如:执行以下两条指令:
MOV A,#0FFH ADD A,#01H
则,(A)=00H,(CY)=1,(AC)=1,(OV)=0
若将以上两条指令改为:
MOV A,#0FFH
21
INC A
则,(A)=00H,不影响标志位CY、AC、OV。
四、乘法指令(MUL)与多字节运算举例
汇编指令格式 机器码格式 操 作 MUL AB
这条指令的功能是把累加器A 和寄存器B中的无符号8位整数相乘,其16位积的低位字节在累加器A中,高位字节在B 中。如果积大于255(0FFH),则溢出标志OV置位,否则OV清“0”。进位标志总是清“0”。
例如:(A)=50H,(B)=0A0H,执行指令: MUL AB
结果:(B)=32H,(A)=00H(即积为3200)。CY=0,OV=1 。 五、除法指令(DIV)
汇编指令格式 机器码格式 操 作 DIV AB
;
1000 0100
(A)←(A)/(B)的商 (B)←(A)/(B)的余数
; 1010 0100
(B)(A)←(A)×(B)
这条指令的功能是把累加器A 中的8位无符号整数除以寄存器B 中的8位无符号整数,商存放在累加器A中,余数在寄存器B 中。进位CY和溢出标志OV 清“0”。如果原来B 中的内容为0(被零除),则结果A和B 中内容不定,且溢出标志OV 置位。在任何情况下,CY都清“0”
例如:(A)=0FBH,(B)=12H,执行指令:
DIV AB
结果:(A)=0DH,(B)=11H,CY=0,OV=0。
22
3.3.3 逻 辑 运 算 指 令
逻辑操作类指令包括与、或、异或、清除、求反、移位等操作。这类指令的操作数都是8位。共25条逻辑操作指令。
一、累加器专用指令(CLR、CPL、RL、RR、RLC、RRC、SWAP)和多字节定点除法运算举例
1.累加器清零
汇编指令格式 机器码格式
1110 0100 ;
(A)←0 操 作
CLR A
清0累加器A,不影响CY、AC、OV等标志。 2.累加器内容按位取反
汇编指令格式 机器码格式 CPL A
1111 0100 ;
(A)←(A)
操 作
对累加器A内容逐位取反,原来为1的位变0,原来为0的位变1。不影响标志位。 例如:(A)=10101010B,执行指令:
CPL A
结果:(A)=01010101B
3. 加器内容循环左移
汇编指令格式 机器码格式 操 作 RL A
23
; 0010 0011 A7←A0 这条指令的功能是把累加器ACC的内容左循环移1 位,位7循环移入位0。
4.累加器带进位左循环移位指令
汇编指令格式 机器码格式 操 作 RLC A
这条指令的功能是将累加器ACC的内容和进位标志一起向左循环移1位,ACC的位7移入进位标志CY,CY移入ACC的0 位,不影响其他标志。
5.累加器内容循环右移指令
汇编指令格式 机器码格式 操 作
RR A
这条指令的功能是将累加器ACC的内容向右循环移1 位,ACC的位0循环移入ACC的位7,不影响标志。
6.累加器带进位右循环移位指令
汇编指令格式 机器码格式 操 作 RRC A
这条指令的功能是将累加器ACC的内容和进位标志CY一起向右循环移一位,ACC的位0
24
; 0011 0011 CY A7←A0 A7→A0 ; 0000 0011 ;
0001 0011 CY A7←A0 移入CY,CY移入ACC的位7。
7. 加器半字节交换指令
汇编指令格式 机器码格式 操 作 SWAP A
;
1100 0100
(A)0~3?(A)4~7
这条指令的功能是将累加器ACC的高半字节(ACC.7~ACC.4)和低半字节(ACC.3~ACC.0)互换。
例如:(A)=0C5H,执行指令:
SWAP A
结果:(A)=5CH。
二、(ANL)、或(ORL)、异或(XRL) 1.逻辑与指令
汇编指令格式 机器码格式 操 作
ANL A,Rn
ANL A,direct
ANL A,@Ri
ANL A,#data
25
; 0101 (A)←(A)∧(Rn) 1rrr ; 0101 0101 (A)←(A)∧(direct)
direct ; 0101 (A)←(A)∧((Ri)) 011i ; 0101 0100 (A)←(A)∧data
data