Free Electronic Circuits & 8085 projects

Electronic projects with circuit diagram and 8085 microprocessor projects.

Explanation of Instruction set of 8086 with free Sample Programs – BIT MANIPULATION INSTRUCTIONS2

Published on Nov 04 2009 // 8086 Instruction set, 8086 Sample programs

SHIFT INSTRUCTIONS


  • SAL/SHL Instruction – Shift operand bits left, put zero in LSB(s)
  • SAL instruction shifts the bits in the operand specified by op1 to its left by the count specified in op2. As a bit is shifted out of LSB position a 0 is kept in LSB position. CF will contain MSB bit.

    Syntax – SAL/AHL destination, count

    Example:

                                                ;CF = 0, BX = 11100101 11010011
    SAL BX, 1                               ;Shift BX register contents by 1 bit position towards left
                                                ;CF = 1, BX = 11001011 1010011

    • SHR Instruction – Shift operand bits right, put zero in MSB

    SHR instruction shifts the bits in op1 to right by the number of times specified by op2 .

    Example:( 1 )

    SHR BP, 1                             ; Shift word in BP by 1 bit position to right and 0 is kept to MSB

    Example:( 2 )

    MOV CL, 03H                        ;Load desired number of shifts into CL
    SHR BYTE PYR[BX]                ;Shift bytes in DS at offset BX and rotate 3 bits to right and keep 3 0’s in MSB

    Example:( 3 )

                                               ;SI = 10010011 10101101 , CF = 0
    SHR SI, 1                             ; Result: SI = 01001001 11010110 and CF = 1, OF = 1, SF = 0, ZF = 0

    • SAR Instruction – Shift operand bits right, new MAB = old MSB

    SAR instruction shifts the bits in the operand specified by op1 towards right by count specified in op2.As bit is shifted out a copy of old MSB is taken in MSB. MSB position and LSB is shifted to CF.

    Syntax – SAR destination, count.

    Example: ( 1 )
                                             ; AL = 00011101 = +29 decimal, CF = 0
    SAR AL, 1                           ;Shift signed byte in AL towards right ( divide by 2 )
                                             ;AL = 00001110 = + 14 decimal, CF = 1
    Example: ( 2 )
                                          ;BH = 11110011 = – 13 decimal, CF = 1
    SAR BH, 1                        ;Shifted signed byte in BH to right and BH = 11111001 = – 7 decimal, CF = 1.