Home » Embedded Systems

Data Transfer Instructions | 8086 Microprocessor

Data Transfer Instructions: In this article, we are going to study about the various instructions that are used for transferring data within the 8086 microprocessor.
Submitted by Monika Sharma, on July 24, 2019

The data transfer instructions are used to transfer data from one location to another. This transfer of data can be either from register to register, register to memory or memory to register.

It is important to note here that the memory to memory transfer of data directly is not possible.

Following are some instructions that are used for data transfer purpose:

  1. MOV
  2. PUSH
  3. POP
  4. XCHG
  5. LAHF
  6. SAHF
  7. IN
  8. OUT
  9. LDS
  10. LES

1) MOV

This instruction simply copies the data from the source to the destination.

    Syntax: 	MOV destination , source
    Example: 	MOV AX, BX


This instruction is used to push data into the stack.

    Syntax:     PUSH source
    Example:    PUSH CX
    Working:    SP  <-  SP - 1
                [SP] <- CH
                SP <-  SP - 1
                [SP]  <-  CL

3) POP

This instruction is used to get the data from the stack.

    Syntax:     POP destination
    Example:    POP CX
    Working:    CL<-  [SP]
                SP <- SP + 1
                CL  <-  [SP]		
                SP <-  SP+ 1


It exchanges the contents of the source and the destination.

    Syntax:     XCHG destination, source
    Example:    XCHG BL, AL


It stands for 'Load AHfrom Flag register'. This instruction will, therefore, load the AH register with the content of lower byte of the flag register.

    Syntax:     LAHF
    Working:    AH <- lower byte of the flag register


It stands for 'Store AH to Flag register'. This instruction stores the content of AH register to the lower byte of flag register.

    Syntax:     SAHF
    Working:    Lower Byte of flag register <- AH

7) IN

This instruction is used to transfer data from the input unit to accumulator.

    Syntax:     IN accumulator, Port address
    Working:    The content from the input unit whose address in mentioned 
                in the instruction is transferred to the accumulator 
                which is the AX register.
    Example:    IN AX, 1326H
                IN AL, DX

8) OUT

This instruction is used to transfer data from accumulator to the output unit.

    Syntax:     OUT Port address, accumulator
    Working:    The content from the accumulator which is the AX registeris 
                transferred tothe output unit whose address in mentioned in 
                the instruction.
    Example:    OUT 1326H, AL
                OUT DX, AX

9) LDS

This instruction will load the register that is defined in the instruction and the data segment (DS) from the source.

    Syntax:     LDS destination, source
    Example:    LDS BX , [SI]
    Working:    BL <-  [SI]
                BH  <-  [SI + 1]
                DS  <-  [ SI + 3  :  SI + 2]

10) LES

The working and syntax of this instruction is the same as the LDS. The difference is only that instead of data segment register (DS), Extra Segment register (ES) is used.



Comments and Discussions



Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates

© some rights reserved.