Date Transfer Instructions

Used to move a source data to destination

  1. MOV Instruction

Instruction/Addressing Opcode Subsequent Byte Example and Operation Flags Affected
MOV Rn, #immediate


01111nnn MOV R4, #5h None
MOV A, #Immediate 01110100 Immediate MOV A, #0FFh P
MOV @Rn, #immediate 0111011n Immediate MOV @R0, #05h None
MOV direct, #immediate


01110101 Direct,  Immediate MOV P2, #0FFh None
MOV Rn, A 11111nnn MOV R5, A None
MOV A, Rn 11101nnn MOV A, R6 P
MOV @Ri, A 1111011i MOV @R0, A None
MOV A, @Ri 1110011i MOV A, @Ri P
MOV dest_direct, src_direct


10000101 Src_Address, dest_Addr MOV P1, P0 None
MOV direct, @Rn


1000011n direct MOV P0, @R1 None
MOV @Ri, Direct 1010011i direct MOV @Ri, P2 None
MOV direct, A


11110101 direct MOV P0, A None
MOV A, Direct 11100101 direct MOV A, P0 P
MOV direct, Rn


10001nnn direct MOV P2, R5 None
MOV DPTR, #immediate


10010000 immediate15-0 MOV DPTR, #1234h None
MOV Rn, direct 10101nnn Direct


MOV R4, P1 None
MOV C, bit 10100010 bit MOV C, 22h None
MOV bit, C 10010010 C MOV, 22, C None


This instruction is used to move a byte from the code or program memory to the accumulator.

Syntax : MOVC A, @A + PC



MOVC A, @A+DPTR 10010011 MOVC A, @A+DPTR


MOVC A, @A+PC 10000011 MOVC A, @A+PC;

PC <- PC +1





The MOVX instruction transfers data between the accumulator and external data memory. External memory may be addressed via 16-bits in the DPTR register or via 8-bits in the R0 or R1 registers. When using 8-bit addressing, Port 2 must contain the high-order byte of the address.


MOVX  @Ri, A 1111001i MOVX @Ri,  A

(Ri) = A

MOVC A, @DPTR 11100000 MOVX A, @Ri

A = (DPTR)

MOVX A, @Ri 1110001i MOVX A, @Ri

A= (Ri)



Swap and Exchange Instructions


The SWAP instruction exchanges the low-order and high-order nibbles within the accumulator. No flags are affected by this instruction.


format Opcode/Encoding Subsequent byte Example  Flags Affected
SWAP A 11000100 SWAP A

A3-0 swap A7-4




The XCH instruction loads the accumulator with the byte value of the specified operand while simultaneously storing the previous contents of the accumulator in the specified operand.

format Opcode/Encoding Subsequent Byte Operation  
XCH A, @Ri 1100011i   XCH A, @R0

A swap (Ri)

XCH A, direct 11000101  direct XCH A, 45h

A swap (direct)

XCH A, Rn 11001nnn   XCH A, R6

A swap Rn



The XCHD instruction exchanges the low-order nibble of the accumulator with the low-order nibble of the specified internal RAM location. The internal RAM is accessed indirectly through R0 or R1. The high-order nibbles of each operand are not affected.

Format Opcode/ Encoding Subsequent Byte Operation Flags Affected
XCHD A, @Ri 1101011i XCHD A,@R1

A3-0 swap (Ri)3-0



Stack Related Instructions


The PUSH instruction increments the stack pointer and stores the value of the specified byte operand at the internal RAM address indirectly referenced by the stack pointer. No flags are affected by this instruction.


Format Opcode/Encoding Subsequent Byte example Flags Affected
PUSH direct 11000000 8-bit direct  addr PUSH A



 Program to show use of PUSH Instruction (By default SP=07h)

MOV R1, #35h      ; R1=  35h

MOV R2, 35h        ; R2=(35h)

MOV R3, #45h      ; R3= 45h

PUSH R1              ; Increment SP(Now SP=08h), Save R1 at stack location (08h)=R1

PUSH R2              ;increment SP(Now SP= 09h), Save R1 at stack location (09h)=R2

PUSH R3             ;increment SP(Now SP= 0Ah), Save R1 at stack location (0Ah)=R3



The POP instruction reads a byte from the address indirectly referenced by the SP register. The value read is stored at the specified address and the stack pointer is decremented. No flags are affected by this instruction.


Format Opcode/Encoding Subsequent Byte Operation Flags Affected
POP direct 11010000 direct 8-bit addr POP 34h



Program to show the use of POP instruction

Assume the stack memory has the following contents

(08h)=15h; (09h)=05h; (0Ah)=25h; (0Bh)=02h

Explain the operation on executing the following instructions






0Bh    02                0Bh                       0Bh                     0Bh                  0Bh

0Ah    25h              0Ah    25h             0Ah                     0Ah                  0Ah

09h    05h              09h    05h              09h      05h         09h                   09h

08h    15h              08h    15h              08h       15h        08h   15h          08h


SP=0Bh                 SP=0Ah                SP=09h               SP=08h            SP=07(Empty)


By admin

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!