# Free Electronic Circuits & 8085 projects

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

Published on Nov 04 2009

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.