Data Transfer Instructions

Last Updated : 22 Oct, 2025

Data transfer instructions in the 8086 microprocessor move data between memory, registers, and I/O devices. These instructions are essential for data manipulation and device communication within a program.

They play a key role in various applications, from simple data handling to complex string processing. Also known as copy instructions, they help transfer data efficiently in the microprocessor.

  • Data transfer instructions enable communication between the microprocessor and external devices.
  • They are fundamental for manipulating and moving data within programs.
data_trans
Data Transfer Flowchart

Types of Data Transfer Instructions

1. Move Instructions

These instructions are used to move data from one memory location to another or between a memory location and a register. They include the following instructions:

  • MOV: Moves data from a source operand to a destination operand.
  • XCHG: Swaps the contents of two operands.
  • XLAT: Translates a byte in memory using a lookup table pointed to by the contents of the AL register.
  • LEA: Loads a 16-bit offset address into a register.

2. Load Instructions

These instructions are used to load data from a memory location or I/O device into a register. They include the following instructions:

  • LDS: Loads a 16-bit pointer value from a memory location into a register pair and loads the 8-bit value from the next memory location into another register.
  • LSS: Loads a 16-bit pointer value from a memory location into a register pair and loads the 16-bit value from the next memory location into another register.
  • LXI: Loads a 16-bit value into a register pair.
  • MOV with memory operand: Loads data from a memory location into a register. 

3. Store Instructions

These instructions are used to store data from a register into a memory location or I/O device. They include the following instructions:

  • MOV with memory operand: Stores data from a register into a memory location.
  • STA: Stores the contents of the accumulator register (AL or AX) in memory.
  • STAX: Stores the contents of a register pair (BC, DE, or HL) in memory using either the indirect addressing 
  • mode or the direct addressing mode.
  • SHLD: Stores a 16-bit data word from registers H and L in memory using the direct addressing mode.
  • PUSH: Stores the contents of a register onto the stack.

4. Input/Output Instructions

These instructions are used to communicate with external input/output (I/O) devices. They include the following instructions:

  • IN: Reads a byte or word of data from an I/O port into a register.
  • OUT: Writes a byte or word of data from a register to an I/O port.
  • INS: Reads a block of data from an I/O port into a memory location.
  • OUTS: Writes a block of data from a memory location to an I/O port. 

5. String Instructions

 These instructions are used for manipulating strings of data, such as moving, copying, or comparing strings. They operate on consecutive bytes or words in memory, and can be used for fast and efficient string processing. Some examples of string instructions include:

  • MOVS: Moves a byte or word from a source location to a destination location, and updates the index registers to point to the next byte or word.
  • CMPS: Compares a byte or word in memory to a byte or word in a register, and updates the index registers accordingly.
  • LODS: Loads a byte or word from a memory location into a register, and updates the index registers to point to the next byte or word.
  • STOS: Stores a byte or word from a register into a memory location, and updates the index registers to point to the next byte or word.

Data Transfer Instructions

Following is the table showing the list of data transfer instructions: 

Here D stands for destination and S stands for source. 
D and S can either be register, data or memory address.

Opcode & OperandExplanation & Instruction
MOV D, SCopy S to D. MOV AX, [SI]
PUSH DPush D to stack. PUSH DX
POP DPop stack to D. POP AX
XCHG D, SSwap D and S. XCHG [2050], AX
IN D, SRead from port. IN AX, DX
OUT D, SWrite to port. OUT 05, AL
XLATTranslate AL. XLAT
LAHFLoad AH from flags. LAHF
SAHFStore AH to flags. SAHF
Comment

Explore