Home of RF and Wireless Vendors and Resources

One Stop For Your RF and Wireless Need

8051 instruction set-opcode,operand,size in bytes,M-cycle

This page covers 8051 instruction set. The 8051 instructions are specified with opcode, operand, size in bytes, M-cycle (number of machine cycles) etc. Here one machine cycle consists of 12 oscillator periods.

Following table-1 mentions meanings of terms used in the instructions mentioned in the other tables along with addressing modes.


Instructions Description
Rn It indicates register R7 to R0.
direct It indicates 8 bit address of the internal data location.
@Ri 8 bit address of internal RAM indicated by register R1 or R0.
#data 8bit constant included in the instruction.
#data 16 16bit constant included in the instruction.
addr 16 16 bit destination address
addr 11 11 bit destination address
rel signed (2's complement) 8 bit offset byte
bit direct addressed bit in internal data RAM or SFR

Table-1

8051 Instructions with their opcodes, operands, size in bytes, Machine cycles

8051 instruction set is divided into following categories.
• Arithmetic instructions
• Logical instructions
• Data transfer instructions
• Boolean instructions
• Branching instructions

Arithmetic instructions


Instruction opcode Operand Size in bytes machine cycles Description
ADD A,Rn 1 1 (12 Oscillator periods) Add register to accumulator
ADDC A,Rn 1 1 Add register to accumulator with carry
SUBB A,Rn 1 1 substract register from ACC with borrow
INC A 1 1 Increment accumulator
DEC A 1 1 Decrement accumulator
INC DPTR 1 2 Increment data pointer
MUL AB 1 4 (i.e. 48 Oscillator periods) Multiply A and B
DIV AB 1 4 (i.e. Oscillator periods) Divide A by B

Logical instructions


Instruction opcode Operand Size in bytes machine cycles Description
ANL A,Rn 1 1 AND regsiter to Accumulator
ANL A,direct 2 1 AND direct byte to accumulator
ANL A,@Ri 1 1 AND indirect RAM to accumulator
ANL A,#data 2 1 AND immediate data to accumulator
ANL direct,A 2 1 AND accumulator to direct byte
ANL direct,#data 3 2 AND immediate data to direct byte
ORL A,Rn 1 1 OR register to accumulator
XRL A,Rn 1 1 Exclusive-OR register to accumulator
CLR A 1 1 Clear accumulator
CPL A 1 1 Complement accumulator
RL A 1 1 Rotate accumulator left
RLC A 1 1 Rotate accumulator left through the carry
RR A 1 1 ROtate accumulator right
RRC A 1 1 Rotate accumulator right through the carry
SWAP A 1 1 Swap nibbles within the accumulator

Data Transfer instructions


Instruction opcode Operand Size in bytes machine cycles Description
MOV A,Rn 1 1 Move register to accumulator
MOV A,direct 2 1 Move direct byte to accumulator
MOV A,#data 2 1 Move immediate data to accumulator
MOVC A,@A+DPTR 1 2 Move code byte relative to DPTR to Acc
MOVX A,@Ri 1 2 Move external RAM (8 bit address) to Acc.
PUSH direct 2 2 Push direct byte onto stack
POP direct 2 2 POP direct byte from stack
XCH A,Rn 1 1 exchange register with accumulator
XCH A,direct 2 1 exchange direct byte with accumulator
XCH A,@Ri 1 1 Exchange indirect RAM with accumulator
XCHD A,@Ri 1 1 Exchange low order digit of indirect RAM with ACC

Boolean instructions


Instruction opcode Operand Size in bytes machine cycles Description
CLR C 1 1 Clear Carry
CLR bit 2 1 clear direct bit
SETB C 1 1 set carry
SETB bit 2 1 set direct bit
CPL C 1 1 complement carry
CPL bit 2 1 complement direct bit
ANL C,bit 2 2 AND direct bit to carry
ANL C,/bit 2 2 AND complement of direct bit to carry
ORL C,bit 2 2 OR direct bit to carry
MOV C,bit 2 1 Move direct bit to carry
MOV bit,C 2 2 move carry to direct bit
JC rel 2 2 Jump if carry is set
JNC rel 2 2 Jump if carry is not set
JB bit,rel 3 2 Jump if direct bit is set
JNB bit,rel 3 2 Jump if direct bit is not set
JBC bit,rel 3 2 Jump if direct bit is set and clear bit

Branching instructions


Instruction opcode Operand Size in bytes machine cycles Description
ACALL addr11 2 2 Absolute subroutine call
LCALL addr16 3 2 Long subrouting call
RET - 1 2 return from subroutine
RETI - 1 2 return from interrupt
AJMP addr11 2 2 Absolute Jump
LJMP addr16 3 2 Long Jump
JMP @A+DPTR 1 2 Jump indirect relative to the DPTR
JZ rel 2 2 Jump if accumulator is zero
JNZ rel 2 2 Jump if accumulator is non zero
CJNE A,direct,rel 3 2 compare direct byte to acc and jump if not equal
DJNZ Rn,rel 2 2 decrement register and jump if not zero
DJNZ direct,rel 3 2 decrement direct byte and jump if not zero
NOP - 1 12 No Operation


8051 Microcontroller Links

Microcontroller tutorial
What is microcontroller
8051 Microcontroller Architecture
Microcontroller hardware Interfacing
8051 Microcontroller Timers
8051 Microcontroller Interrupts
8051 Serial Communication

RF and Wireless Terminologies


Share this page

Translate this page