0% found this document useful (0 votes)
117 views1 page

8051 Codding Map

The document summarizes the instruction set of the 8051 microcontroller. It lists the mnemonics, descriptions, number of bytes, and clock cycles for various instructions including data transfer, arithmetic, logical, and flag manipulation operations. Examples include ADD, MOV, ANL, CJNE, and others. Memory addressing modes supported include direct, indirect, register, and immediate operands.

Uploaded by

Selam12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
117 views1 page

8051 Codding Map

The document summarizes the instruction set of the 8051 microcontroller. It lists the mnemonics, descriptions, number of bytes, and clock cycles for various instructions including data transfer, arithmetic, logical, and flag manipulation operations. Examples include ADD, MOV, ANL, CJNE, and others. Memory addressing modes supported include direct, indirect, register, and immediate operands.

Uploaded by

Selam12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

8051 Instruction Set Summary Mnemonic Description Byte Cycle Mnemonic Description Byte Cycle

CPL A Complement accumulator 1 1 CJNE A,#data,rel Compare immediate to A and jump if not equal 3 2
Rn Register R7-R0 of the currently selected Register Bank.
RL A Rotate accumulator left 1 1 CJNE Rn,#data,rel Compare immed. to reg. and jump if not equal 3 2
Data 8-bit internal data location’s address. This could be an internal Data
RAM location (0-127) or a SFR [i.e. I/O port, control register, status RLC A Rotate accumulator left through carry 1 1 CJNE @Rn,#data,rel Compare immed. to ind. and jump if not equal 3 2
register, etc. (128-255)]. RR A Rotate accumulator right 1 1 DJNZ Rn,rel Decrement register and jump in not zero 2 2
@Ri 8-bit Internal Data RAM location (0-255) addressed indirectly through RRC A Rotate accumulator right through carry 1 1 DJNZ direct,rel Decrement direct byte and jump in not zero 3 2
register R1 or R0. SWAP A Swap nibbles within the accumulator 1 1 NOP No operation 1 1
#data 8-bit constant included in instruction.
Logic operations Data transfer
#data16 16-bit constant included in instruction.
addr16 16-bit destination address. Used by LCALL and LJMP. A branch can be ANL A,Rn AND register to accumulator 1 1 MOV A,Rn Move register to accumulator 1 1
anywhere within the 64k byte Program Memory address space. ANL A,direct AND direct byte to accumulator 2 1 MOV A,direct*) Move direct byte to accumulator 2 1
addr11 11-bit destination address. Used by ACALL and AJMP. The branch will ANL A,@Ri AND indirect RAM to accumulator 1 1 MOV A,@Ri Move indirect RAM to accumulator 1 1
be within the same 2k byte page of Program Memory as the first byte of ANL A,#data AND immediate data to accumulator 2 1 MOV A,#data Move immediate data to accumulator 2 1
the following instruction. ANL direct,A AND accumulator to direct byte 2 1 MOV Rn,A Move accumulator to register 1 1
rel Signed (two’s component) 8-bit offset byte. Used by SJMP and all
ANL direct,#data AND immediate data to direct byte 3 2 MOV Rn,direct Move direct byte to register 2 2
conditional jumps. Range is –128 to +127 bytes relative to first byte of
the following instruction. ORL A,Rn OR register to accumulator 1 1 MOV Rn,#data Move immediate data to register 2 1
bit Direct Addressed bit in Internal Data RAM or Special Function Register. ORL A,direct OR direct byte to accumulator 2 1 MOV direct,A Move accumulator to direct byte 2 1
ORL A,@Ri OR indirect RAM to accumulator 1 1 MOV direct,Rn Move register to direct byte 2 2
Instruction Flag Instruction Flag ORL A,#data OR immediate data to accumulator 2 1 MOV direct,direct Move direct byte to direct byte 3 2
C OV AC C OV AC ORL direct,A OR accumulator to direct byte 2 1 MOV direct,@Ri Move indirect RAM to direct byte 2 2
ADD X X X CLR C O ORL direct,#data OR immediate data to direct byte 3 2 MOV direct,#data Move immediate data to direct byte 3 2
ADDC X X X CPL C X
SUBB X X X ANL C,bit X XRL A,Rn Exclusive OR register to accumulator 1 1 MOV @Ri,A Move accumulator to indirect RAM 1 1
MUL O X ANL C,/bit X XRL A,direct Exclusive OR direct byte to accumulator 2 1 MOV @Ri,direct Move direct byte to indirect RAM 2 2
DIV O X ORL C,bit X XRL A,@Ri Exclusive OR indirect RAM to accumulator 1 1 MOV @Ri,#data Move immediate data to indirect RAM 2 1
DA X ORL C,/bit X
XRL A,#data Exclusive OR immediate data to accumulator 2 1 MOV DPTR,#data16 Load data pointer with a 16-bit constant 3 2
RRC X MOV C,bit X
RLC X CJNE X XRL direct,A Exclusive OR accumulator to direct byte 2 1 MOVC A,@A+DPTR Move code byte relative to DPTR to accumulator 1 2
SETB C 1 XRL direct,#data Exclusive OR immediate data to direct byte 3 2 MOVC A,@A+PC Move code byte relative to PC to accumulator 1 2
Note that operations on SFR byte address 206 or bit addresses 209-215 (i.e. the PSW or bits MOVX A,@Ri Move external RAM (8-bit addr.) to A 1 2
Boolean variable manipulation
in the PSW) will also affect flag settings.
CLR C Clear carry flag 1 1 MOVX A,@DPTR Move external RAM (16-bit addr.) to A 1 2
CLR bit Clear direct bit 2 1 MOVX @Ri,A Move A to external RAM (8-bit addr.) 1 2
Mnemonic Description Byte Cycle SETB C Set carry flag 1 1 MOVX @DPTR,A Move A to external RAM (16-bit addr.) 1 2
SETB bit Set direct bit 2 1 PUSH direct Push direct byte onto stack 2 2
Arithmetic operations
CPL C Complement carry flag 1 1 POP direct Pop direct byte from stack 2 2
ADD A,Rn Add register to accumulator 1 1
CPL bit Complement direct bit 2 1 XCH A,Rn Exchange register to accumulator 1 1
ADD A,direct Add direct byte to accumulator 2 1
ANL C,bit AND direct bit to carry flag 2 2 XCH A,direct Exchange direct byte to accumulator 2 1
ADD A,@Ri Add indirect RAM to accumulator 1 1
ANL C,/bit AND complement of direct bit to carry 2 2 XCH A,@Ri Exchange indirect RAM to accumulator 1 1
ADD A,#data Add immediate data to accumulator 2 1
ORL C,bit OR direct bit to carry flag 2 2 XCHD A,@Ri Exchange low-order nibble indir. RAM with A 1 1
ADDC A,Rn Add register to accumulator with carry flag 1 1
ORL C,/bit OR complement of direct bit to carry 2 2 *) MOV A,ACC is not a valid instruction
ADDC A,direct Add direct byte to A with carry flag 2 1
ADDC A,@Ri Add indirect RAM to A with carry flag 1 1 MOV C,bit Move direct bit to carry flag 2 1
ADDC A,#data Add immediate data to A with carry flag 2 1 MOV bit,C Move carry flag to direct bit 2 2 jne A,#data,@ cjne A,#data,@
SUBB A,Rn Subtract register to accumulator with borrow 1 1 Program and machine control (jump if A ! = data)

SUBB A,direct Subtract direct byte to A with carry borrow 2 1 ACALL addr11 Absolute subroutine call 2 2 je A, #data,@ add A,#low(−data) or cjne A,#(data),ne
(jump if A == data) jz @ jmp @
SUBB A,@Ri Subtract indirect RAM to A with carry borrow 1 1 LCALL addr16 Long subroutine call 3 2
ne: ...
SUBB A,#data Subtract immediate data to A with carry borrow 2 1 RET Return from subroutine 1 2
ja, jnbe A,#data,@ add A,#low(−data−1) or cjne A,#(data+1),ne
INC A Increment accumulator 1 1 RETI Return from interrupt 1 2 (jump if A > data) jc @ ne: jnc @
INC Rn Increment register 1 1 AJMP addr11 Absolute jump 2 2 jae, jnb A,#data,@ add A,#low(−data) or cjne A,#(data),ne
INC direct Increment direct byte 2 1 LJMP addr16 Long jump 3 2 (jump if A >= data) jc @ ne: jnc @
INC @Ri Increment indirect RAM 1 1 SJMP rel Short jump (relative address) 2 2 jb, jnae A,#data,@ add A,#low,(−data) or cjne A,#(data),ne
DEC A Decrement accumulator 1 1 JMP @A+DPTR Jump indirect relative to the DPTR 1 2 (jump if A < data) jnc @ ne: jc @
DEC Rn Decrement register 1 1 JZ rel Jump if accumulator is zero 2 2 jbe, jna A,#data,@ add A,#low(−data−1) or cjne A,#(data+1),ne
DEC direct Decrement direct byte 2 1 JNZ rel Jump if accumulator is not zero 2 2 (jump if A <= data) jnc @ ne: jc @
DEC @Ri Decrement indirect RAM 1 1 JC rel Jump if carry flag is set 2 2 switch A <,==,> #data cjne A,#data,ne
INC DPTR Increment data pointer 1 2 JNC rel Jump if carry flag is not set 2 2 (no A modification) ... ; execute code if A==data
ne: jc is_below ; jump if A<data
MUL AB Multiply A and B -> [B hi]:[A lo] 1 4 JB bit,rel Jump if bit is set 3 2 jnc is_above ; jump if A>data or exec. code
DIV AB Divide A by B -> A=result, B=remainder 1 4 JNB bit,rel Jump if bit is not set 3 2
DA A Decimal adjust accumulator 1 1 JBC bit,rel Jump if direct bit is set and clear bit 3 2
Enjoy It!
CLR A Clear accumulator 1 1 CJNE A,direct,rel Compare direct byte to A and jump if not equal 3 2 Mates
This paper was created by Štěpán Matějka alias Mates for anybody who needs it. Mates, Prague – Czech Republic 1998,2002.

You might also like