An instruction in assembly language is a symbolic representation of a single machine instruction. In its simplest form, an instruction consists of a mnemonic and a list of operands.

  • A mnemonic is a short alphabetic code that assists the CPU in remembering an instruction. This mnemonic can be followed by a list of operands
  • Each instruction in assembly language is coded into one or more bytes
  • The first byte is generally an OpCode, i.e. a numeric code representing a particular instruction
  • Additional bytes may affect the action of the instruction or provide information about the data needed by the instruction.

    Instruction Types:

    There exist around 150 instructions for the 8086 processor. These instructions may be classified into different classes. The following table summarizes the different classes of instructions, together woth examples of each class.

    Instruction Type Definiton Examples
    Data transfer instructions Transfer information between registers and memory locations or I/O ports MOV, XCHG, LEA,PUSH,POP
    Arithmetic instructions Perform arithmetic operations on binary or binary-coded-decimal (BCD) numbers ADD, SUB, INC, DEC
    Bit manipulation instructions Perform shift, rotate, and logical operations on memory locations and registers SHL, SHR, SAR, ROL
    Control transfer instructions Control sequence of program execution. Include jumps and procedure transfers JL, JE, JNE, JGE
    String handling instructions Move, compare, and scan strings of data OVSB, MOVSW, CMPS, CMPSB
    Processor control instructions Set and clear status flags, and change the processor execution state STC, STD, STI, CLC
    Interrupt instructions Interrupt processor to service a specific condition INT, INTO, IRET
    Miscellaneous instructions NOP, WAIT

    Table 2: 8086 Instructions

    Instruction Semantics:

    The following rules have to be strictly followed in order to write correct code.

    1 - Both operands have to be of the same size:

    Instruction Correct Reason
    MOV AX, BL No Operands of different sizes
    MOV AL, BL Yes Operands of same sizes
    MOV AH, BL Yes Operands of same sizes
    MOV BL, CX No Operands of different sizes

    Table 3: Register-Regsiter Transfer Instructions

    2 - Both operands cannot be memory operands simultaneously:

    Instruction Correct Reason
    MOV i , j No Both operands are memory variables
    MOV AL, i Yes Move memory variable to register
    MOV j, CL Yes Move register to memory variable

    Table 4: Memory-Register Transfer Instructions

    3 - First operand, or destination, cannot be an immediate value:

    Instruction Correct Reason
    ADD 2, AX No Move register to constant
    ADD AX, 2 yes Move constant to register

    Table 5: Constant to Regsiter Transfer Instructions