Articles added in Mathematics Lab | Cyber Lab is now open | Astronomy Lab is now open | VLSI Lab is now open | 120 SEO Tips article published | More exciting articles coming soon!




Instruction sets of 8051

Arithmatic Operations

OPCODE

OPERAND

DESCRIPTION

NO. OF BYTES

ADD

A,Rn

Add register to Accumulator

1

ADD

A,direct

Add direct byte to Accumulator

2

ADD

A,@Ri

Add indirect RAM to Accumulator

1

ADD

A,#data

Add immediate data to Accumulator

2

ADDC

A,Rn

Add register to Accumulator with Carry

1

ADDC

A,direct

Add direct byte to Accumulator with Carry

2

ADDC

A,@Ri

Add indirect RAM to Accumulator with Carry

1

ADDC

A,#data

Add immediate data to Acc with Carry

2

SUBB

A,Rn

Subtract Register from Acc with borrow

1

SUBB

A,direct

Subtract direct byte from Acc with borrow

2

SUBB

A,@Ri

Subtract indirect RAM from ACC with borrow

1

SUBB

A,#data

Subtract immediate data from Acc with borrow

2

INC

A

Increment Accumulator

1

INC

Rn

Increment register

1

INC

direct

Increment direct byte

2

INC

@Ri

Increment direct RAM

1

DEC

A

Decrement Accumulator

1

DEC

Rn

Decrement Register

1

DEC

direct

Decrement direct byte

2

DEC

@Ri

Decrement indirect RAM

1

INC

DPTR

Increment Data Pointer

1

MUL

AB

Multiply A & B

1

DIV

AB

Divide A by B

1

DA

A

Decimal Adjust Accumulator

1

 

LOGICAL OPERATIONS

ANL

A,Rn

AND Register to Accumulator

1

ANL

A,direct

AND direct byte to Accumulator

2

ANL

A,@Ri

AND indirect RAM to Accumulator

1

ANL

A,#data

AND immediate data to Accumulator

2

ANL

direct,A

AND Accumulator to direct byte

2

ANL

direct,#data

AND immediate data to direct byte

3

ORL

A,Rn

OR register to Accumulator 1

1

ORL

A,

direct OR direct byte to Accumulator

2

ORL

A,@Ri

OR indirect RAM to Accumulator

1

ORL

A,#

data OR immediate data to Accumulator

2

ORL

direct,A

OR Accumulator to direct byte 2

2

ORL

direct,#data

OR immediate data to direct byte

3

XRL

A,Rn

Exclusive-OR register to Accumulator

1

XRL

A,direct

Exclusive-OR direct byte to Accumulator

2

XRL

A,@Ri

Exclusive-OR indirect RAM to Accumulator

1

XRL

A,#data

Exclusive-OR immediate data to Accumulator

2

XRL

direct,A

Exclusive-OR Accumulator to direct byte

2

XRL

direct,#data

Exclusive-OR immediate data to direct byte

3

CLR

A

Clear Accumulator

1

CPL

A

Complement Accumulator

1

RL

A

Rotate Accumulator Left

1

RLC

A

Rotate Accumulator Left through the Carry

1

RR

A

Rotate Accumulator Right

1

RRC

A

Rotate Accumulator Right through the Carry

1

SWAP

A

Swap nibbles within the Accumulator

1

 

DATA TRANSFER OPERATIONS

MOV

A,Rn

Move register to Accumulator

1

MOV

A,direct

Move direct byte to Accumulator

2

MOV

A,@Ri

Move indirect RAM to Accumulator

1

MOV

A,#data

Move immediate data to Accumulator

2

MOV

Rn,A

Move Accumulator to register

1

MOV

Rn,direct

Move direct byte to register

2

MOV

Rn,#data

Move immediate data to register

2

MOV

direct,A

Move Accumulator to direct byte

2

MOV

direct,Rn

Move register to direct byte

2

MOV

direct,direct

Move direct byte to direct

3

MOV

direct,@Ri

Move indirect RAM to direct byte

2

MOV

direct,#data

Move immediate data to direct byte

3

MOV

@Ri,A Move

Accumulator to indirect RAM

1

MOV

@Ri,direct

Move direct byte to indirect RAM

2

MOV

@Ri,#data

Move immediate data to indirect RAM

2

MOV

DPTR,#data16

Load Data Pointer with a 16-bit Constant

3

MOVC

A,@A+DPTR

Move Code byte relative to DPTR to Acc

1

MOVC

A,@A+PC

Move Code byte relative to PC to Acc

1

MOVX

A,@Ri

Move External RAM (8-bit address) to Acc

1

MOVX

A,@DPTR

Move External RAM (16-bit address) to Acc

1

MOVX

@Ri,A

Move Acc to External RAM (8-bitaddr)

1

MOVX

@DPTR,A

Move Acc to External RAM (16-bitaddr)

1

PUSH

direct

Push(Write) direct byte onto stack

2

POP

direct

Pop(Read) direct byte from stack

2

XCH

A,Rn

Exchange register with Accumulator

1

XCH

A,direct

Exchange direct byte with Accumulator

2

XCH

A,@Ri

Exchange indirect RAM with Accumulator

1

XCHD

A,@Ri

Exchange low-order Digit indirect RAM with Acc

1

 

BOOLEAN VARIABLE MANIPULATION

CLR

C

Clear Carry

1

CLR

bit

Clear direct bit

2

SETB

C

Set Carry

1

SETB

bit

Set direct bit

2

CPL

C

Complement Carry

1

CPL

bit

Complement direct bit

2

ANL

C,bit

AND direct bit to CARRY

2

ANL

C,/bit

AND complement of direct bit to Carry

2

ORL

C,bit

OR direct bit to Carry

2

ORL

C,/bit OR

complement of direct bit to Carry

2

MOV

C,bit

Move direct bit to Carry

2

MOV

bit,C

Move Carry to direct bit

2

JC

rel

Jump if Carry is set

2

JNC

rel

Jump if Carry not set

2

JB

bit,rel

Jump if direct Bit is set

3

JNB

bit,rel

Jump if direct Bit is Not set

3

JBC

bit,rel

Jump if direct Bit is set & clear bit

3

 

 

PROGRAM BRANCHING

ACALL

addr11

Absolute Subroutine Call

2

LCALL

addr16

Long Subroutine Call

3

RET

 

Return from Subroutine

1

RETI

 

Return from interrupt

1

AJMP

addr11

Absolute Jump

2

LJMP

addr16

Long Jump

3

SJMP

rel

Short Jump (relative address)

2

JMP

@A+DPTR

Jump indirect relative to the DPTR

1

JZ

rel

Jump if Accumulator is Zero

2

JNZ

rel

Jump if Accumulator is Not Zero

2

CJNE

A,direct,rel

 

Compare direct byte to Acc and Jump if Not Equal

3

CJNE

A,#data,rel

Compare immediate to Acc and Jump if Not Equal

3

CJNE

Rn,#data,rel

Compare immediate to register and Jump if Not Equal

3

CJNE

@Ri,#data,rel

Compare immediate to indirect and Jump if Not Equal

3

DJNZ

Rn,rel

Decrement register and Jump if Not Zero

2

DJNZ

direct,rel

Decrement direct byte and Jump if Not Zero

3

NOP

 

No Operation

1






CACKLE comment system





Programming Resources
Computer Networking Fundamentals Android Application