MCS'51 INSTRUCTION SET
command description bytes cycles
ADD A, Rn A=A+Rn 1 12
ADD A, direct A=A+@direct 2 12
ADD A, @Ri A=A+@Ri 1 12
ADD A, #data A=A+#data 2 12
ADDC A, Rn A=A+Rn+C 1 12
ADDC A, direct A=A+@direct+C 2 12
ADDC A, @Ri A=A+@Ri+C 1 12
ADDC A, #data A=A+#data+C 2 12
SUBB A, Rn A=A-Rn-C 1 12
SUBB A, direct A=A-@direct-C 2 12
SUBB A, @Ri A=A-@Ri-C 1 12
SUBB A, #data A=A-#data-C 2 12
INC A A=A+1 1 12
INC Rn Rn=Rn+1 1 12
INC direct @direct=@direct+1 2 12
INC @Ri @Ri=@Ri+1 1 12
DEC A A=A-1 1 12
DEC Rn Rn=Rn-1 1 12
DEC direct @direct=@direct-1 2 12
DEC @Ri @Ri=@Ri-1 1 12
INC DPTR DPTR=DPTR+1 1 24
MUL AB BA=A*B 1 48
DIV AB A/B=A..B 1 48
DA A BCD adjustment 1 12
ANL A, Rn A=A&Rn 1 12
ANL A, direct A=A&@direct 2 12
ANL A, @Ri A=A&@Ri 1 12
ANL A, #data A=A&#data 2 12
ANL direct, A @direct=@direct&A 2 12
ANL direct, #data @direct=@direct&#data 3 24
ORL A, Rn 1 12
ORL A, direct 2 12
ORL A, @Rn 1 12
ORL A, #data 2 12
ORL direct, A 2 12
ORL direct, #data 3 24
XRL A, Rn 1 12
XRL A, direct 2 12
XRL A, @Ri 1 12
XRL A, #data 2 12
XRL direct, A 2 12
XRL direct, #data 3 24
CLR A A=0 1 12
CPL A A=A' 1 12
RL A A=A[6..0].A[7] 1 12
RLC A A=A[6..0].C, C=A[7] 1 12
RR A A=A[0].A[7..1] 1 12
RRC A A=C.A[7..1], C=A[0] 1 12
SWAP A A=A[3..0].A[7..4] 1 12
MOV A, Rn A=Rn 1 12
MOV A, direct A=@direct 2 12
MOV A, @Rn A=@Rn 1 12
MOV A, #data A=#data 2 12
MOV Rn, A 1 12
MOV Rn, direct 2 24
MOV Rn, #data 2 12
MOV direct, A 2 12
MOV direct, Rn 2 24
MOV direct, direct 3 24
MOV direct, @Rn 2 24
MOV direct, #data 3 24
MOV @Ri, A 1 12
MOV @Ri, direct 2 24
MOV @Ri, #data 2 12
MOV DPTR, #data16 3 24
MOVC A,@A+DPTR A=@(A+DPTR) 1 24
MOVC A, @A+PC A=@(A+PC) 1 24
MOVX A, @Ri 1 24
MOVX A, @DPTR 1 24
MOVX @Ri, A 1 24
MOVX @DPTR, A 1 24
PUSH direct 2 24
POP direct 2 24
XCH A, Rn T=A, A=Rn, Rn=T 1 12
XCH A, direct 2 12
XCH A, @Ri 1 12
XCHD A, @Ri exchange low 4 bits 1 12
CLR C C=0 1 12
CLR bit bit =0 2 12
SETB C C=1 1 12
SETB bit bit=1 2 12
CPL C C= ~ C 1 12
CPL bit bit = ~ bit 2 12
ANL C, bit C=C&bit 2 24
ANL C, /bit C=C&~bit 2 24
ORL C, bit C=C|bit 2 24
ORL C, /bit C=C|~bit 2 24
MOV C, bit C=bit 2 12
MOV bit, C bit=C 2 24
JC rel if C then jump 2 24
JNC rel  if not C then jump 2 24
JB bit, rel  if bit then jump 3 24
JNB bit, rel if not bit then jump 3 24
JBC bit, rel if bit then jump; bit=0 3 24
ACALL addr11 absolute subroutine call 2 24
LCALL addr16 long subroutine call 3 24
RET return from subroutine call 1 24
RETI return from interrupt routine 1 24
AJMP addr11 absolute jump 2 24
LJMP addr16 long jump 3 24
SJMP rel short jump 2 24
JMP @a+DPTR indirect jump 1 24
JZ rel if A=0 then jump 2 24
JNZ rel if A<>0 then jump 2 24
CJNE A, direct, rel if A<>@direct then jump 3 24
CJNE A, #data, rel 3 24
CJNE Rn, #data, rel 3 24
CJNE @Ri, #data, rel 3 24
DJNZ Rn, rel Rn--, if Rn<>0 then jump 2 24
DJNZ direct, rel (@direct)--, if @direct <>0 then jump 3 24
NOP nothing 1 12