Universty of mosul
Elecrtical engineering
rd
3 power and machine
Shift and Rotate Instructions
Preapere students:
Osama mekdad hamid
Zaid mohamed
Group :(2)
Shift and Rotate Instructions
Computer Organization and Assembly Language
Computer Science Department
National University of Computer and Emerging Sciences
Islamabad
Shift and Rotate Instructions
Logical vs Arithmetic Shifts
SHL Instruction
SHR Instruction
SAL and SAR Instructions
ROL Instruction
ROR Instruction
RCL and RCR Instructions
SHLD/SHRD Instructions
Logical vs Arithmetic Shifts
A logical shift fills the newly created bit position with zero:
CF
• An arithmetic shift fills the newly created bit
position with a copy of the number’s sign bit:
CF
SHL Instruction
The SHL (shift left) instruction performs a logical left shift
on the destination operand, filling the lowest bit with 0.
CF
• Operand types for SHL: SHL destination,count
SHL reg,imm8
(Same for all shift and
SHL mem,imm8 rotate instructions)
SHL reg,CL
SHL mem,CL
Fast Multiplication
Shifting left 1 bit multiplies a number by 2
mov dl,5 Before: 00000101 =5
shl dl,1
After: 00001010 = 10
Shifting left n bits multiplies the operand by 2n
For example, 5 * 22 = 20
mov dl,5
shl dl,2 ; DL = 20
SHR Instruction
The SHR (shift right) instruction performs a logical right
shift on the destination operand. The highest bit position is
filled with a zero.
CF
Shifting right n bits divides the operand by 2n
mov dl,80
shr dl,1 ; DL = 40
shr dl,2 ; DL = 10
SAL and SAR Instructions
SAL (shift arithmetic left) is identical to SHL.
SAR (shift arithmetic right) performs a right arithmetic
shift on the destination operand.
CF
An arithmetic shift preserves the number's sign.
mov dl,-80
sar dl,1 ; DL = -40
sar dl,2 ; DL = -10
Your turn . . .
Indicate the hexadecimal value of AL after each shift:
mov al,6Bh ; 01101011
shr al,1 a. 35h
shl al,3 b. A8h
mov al,8Ch ; 10001100
sar al,1 c. C6h
sar al,3 d. F8h
ROL Instruction
ROL (rotate) shifts each bit to the left
The highest bit is copied into both the Carry flag and
into the lowest bit
No bits are lost
mov al,11110000b
rol al,1 ; AL = 11100001b
mov dl,3Fh
rol dl,4 ; DL = F3h
ROR Instruction
ROR (rotate right) shifts each bit to the right
The lowest bit is copied into both the Carry flag and into the
highest bit
No bits are lost
mov al,11110000b
ror al,1 ; AL = 01111000b
mov dl,3Fh
ror dl,4 ; DL = F3h
Your turn . . .
Indicate the hexadecimal value of AL after each
rotation:
mov al,6Bh ; 01101011
ror al,1 B5h
rol al,3 ADh
RCL Instruction
RCL (rotate carry left) shifts each bit to the left
Copies the Carry flag to the least significant bit
Copies the most significant bit to the Carry flag
CF
clc ; CF = 0
mov bl,88h ; CF,BL = 0 10001000b
rcl bl,1 ; CF,BL = 1 00010000b
rcl bl,1 ; CF,BL = 0 00100001b
RCR Instruction
RCR (rotate carry right) shifts each bit to the right
Copies the Carry flag to the most significant bit
Copies the least significant bit to the Carry flag
CF
stc ; CF = 1
mov ah,10h ; CF,AH = 1 00010000b
rcr ah,1 ; CF,AH = 0 10001000b
Your turn . . .
Indicate the hexadecimal value of AL after each
rotation:
stc
mov al,6Bh
rcr al,1 a. B5h
rcl al,3 b. AEh
SHLD Instruction
Shifts a destination operand a given number of bits to
the left
The bit positions opened up by the shift are filled by the
most significant bits of the source operand
The source operand is not affected
Syntax:
SHLD destination, source, count
Operand types:
SHLD reg16/32, reg16/32, imm8/CL
SHLD mem16/32, reg16/32, imm8/CL
SHLD Example
Shift wval 4 bits to the left and replace its lowest 4
bits with the high 4 bits of AX:
.data
wval AX
wval WORD 9BA6h
Before: 9BA6 AC36
.code
mov ax,0AC36h After: BA6A AC36
shld wval,ax,4
SHRD Instruction
Shifts a destination operand a given number of bits to the
right
The bit positions opened up by the shift are filled by the
least significant bits of the source operand
The source operand is not affected
Syntax:
SHRD destination, source, count
Operand types:
SHRD reg16/32, reg16/32, imm8/CL
SHRD mem16/32, reg16/32, imm8/CL
SHRD Example
Shift AX 4 bits to the right and replace its highest 4
bits with the low 4 bits of DX:
mov ax,234Bh
mov dx,7654h Before: 7654 234B
shrd ax,dx,4
After: 7654 4234
Shift and Rotate Applications
Shifting Multiple Doublewords
Binary Multiplication
Displaying Binary Bits
Isolating a Bit String