0% found this document useful (0 votes)
23K views6 pages

LESSON 9 - Rotate Instructions

The document discusses four rotate instructions in x86 assembly: ROL, ROR, RCL, and RCR. ROL and ROR rotate bits left and right respectively by a specified number. RCL and RCR rotate through the carry flag, treating it as part of the rotation. All instructions can rotate a single bit or multiple bits using a count register. The carry flag and overflow flag are set based on the rotation. Rotate instructions can isolate bits and are commonly used to encrypt/decrypt data.

Uploaded by

amae marshall
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23K views6 pages

LESSON 9 - Rotate Instructions

The document discusses four rotate instructions in x86 assembly: ROL, ROR, RCL, and RCR. ROL and ROR rotate bits left and right respectively by a specified number. RCL and RCR rotate through the carry flag, treating it as part of the rotation. All instructions can rotate a single bit or multiple bits using a count register. The carry flag and overflow flag are set based on the rotation. Rotate instructions can isolate bits and are commonly used to encrypt/decrypt data.

Uploaded by

amae marshall
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

LESSON 9 – Rotate Instructions

Rotate instructions rotate bits out into the other end of the operand. Rotate instructions can be
classified by the direction of the rotation (rotate to the left or rotate to the right). They can also be classified
as to whether the carry flag is part of the rotate operation or not.
Rotate instructions can be used to isolate bits in bytes or words.

Rotate Instructions
I. ROL Instruction – The ROL (Rotate Left) instruction rotates to the left the destination operand by
the number of bits specified in the count operand.
Format: ROL D, Count
Action:

Destination Example
register ROL AL, CL
MM ROL byte ptr BETA, CL
Register ROL AL, 1
MM ROL byte ptr BETA, 1
Pointers:
1. The number of bits to be rotated can be specified as a constant of 1 (only a constant value
of 1 is allowed) or in register CL. Register CL is used if more than 1 bit is to be rotated.
2. CF always contains the last bit rotated out of the destination operand.
3. OF is undefined if more than 1 bit is rotated. If only 1 bit is rotated, OF is cleared to 0 if
the sign bit retains its original value; otherwise, it is set to 1.
4. Only CF and OF are affected, the rest are not.
5. For an 8-bit operand, when rotating it to the left 8 times, the value of the destination
operand will remain the same. For a 16-bit operand, when rotating it to the left 16 times,
the destination operand will remain the same.
6. If the destination operand is a memory location, the prefix byte ptr or word ptt should
appear after the ROL instruction to denote the data size of the destination operand.
Example 1:
MOV AL, 04H
ROL AL, 1
Solution:
MOV AL, 04H

ROL AL, 1

After the execution, AL = 08H. The flags will be: CF = 0, OF = 0


Example 2:
MOV AL, 55H
MOV CL. 03H
ROL AL, CL
Solution:
MOV AL, 55H

MOV CL. 03H


ROL AL, CL
CL = 1

CL = 2

CL = 3

After the execution, AL = AAH. The flags will be: CF = 0, OF = undefined


II. ROR Instruction – The ROR (Rotate Right) instruction rotates to the right the destination operand
by the number of bits specified in the count operand.
Format: ROR D, Count
Action:

Destination Example
register ROR AL, CL
MM ROR byte ptr BETA, CL
Register ROR AL, 1
MM ROR byte ptr BETA, 1
Pointers:
1. The number of bits to be rotated can be specified as a constant of 1 (only a constant value
of 1 is allowed) or in register CL. Register CL is used if more than 1 bit is to be rotated.
2. CF always contains the last bit rotated out of the destination operand.
3. OF is undefined if more than 1 bit is rotated. If only 1 bit is rotated, OF is cleared to 0 if
the sign bit retains its original value; otherwise, it is set to 1.
4. Only CF and OF are affected, the rest are not.
5. For an 8-bit operand, when rotating it to the right 8 times, the value of the destination
operand will remain the same. For a 16-bit operand, when rotating it to the right 16 times,
the destination operand will remain the same.
6. If the destination operand is a memory location, the prefix byte ptr or word ptt should
appear after the ROR instruction to denote the data size of the destination operand.
Example 1:
MOV AL, 04H
ROR AL, 1
Solution:
MOV AL, 04H

ROR AL, 1

After the execution, AL = 02H. The flags will be: CF = 0, OF = 0


Example 2:
MOV AL, 55H
MOV CL. 03H
ROR AL, CL
Solution:
MOV AL, 55H

MOV CL. 03H


ROR AL, CL
CL = 1

CL = 2

CL = 3

After the execution, AL = AAH. The flags will be: CF = 0, OF = undefined


III. RCL Instruction – The RCL (Rotate Left through Carry) instruction rotates to the left the
destination operand by the number of bits specified in the count operand. The carry flag is treated
as part of the rotate.
Format: RCL D, Count
Action:

Destination Example
register RCL AL, CL
MM RCL byte ptr BETA, CL
Register RCL AL, 1
MM RCL byte ptr BETA, 1
Pointers:
1. The number of bits to be rotated can be specified as a constant of 1 (only a constant value
of 1 is allowed) or in register CL. Register CL is used if more than 1 bit is to be rotated.
2. CF is part of the rotate operation. This means that the CF is rotated into the LSB of the
operand and the MSB of the operand goes to CF.
3. OF is undefined if more than 1 bit is rotated. If only 1 bit is rotated, OF is cleared to 0 if
the sign bit retains its original value; otherwise, it is set to 1.
4. Only CF and OF are affected, the rest are not.
5. For an 8-bit operand, when rotating it to the left 9 times, the value of the destination
operand will remain the same. For a 16-bit operand, when rotating it to the left 17 times,
the destination operand will remain the same.
6. If the destination operand is a memory location, the prefix byte ptr or word ptt should
appear after the RCL instruction to denote the data size of the destination operand.
Example 1: Assume that CF = 1.
MOV AL, 04H
RCL AL, 1
Solution:
MOV AL, 04H

RCL AL, 1

After the execution, AL = 09H. The flags will be: CF = 0, OF = 0

Example 2: Assume that CF = 0.


MOV AL, 55H
MOV CL. 03H
ROL AL, CL
Solution:
MOV AL, 55H

MOV CL. 03H


RCL AL, CL
CL = 1

CL = 2

CL = 3

After the execution, AL = A9H. The flags will be: CF = 0, OF = undefined


IV. RCR Instruction – The RCR (Rotate Right through Carry) instruction rotates to the right the
destination operand by the number of bits specified in the count operand. The carry flag is treated
as part of the rotate.
Format: ROR D, Count
Action:

Destination Example
register ROR AL, CL
MM ROR byte ptr BETA, CL
Register ROR AL, 1
MM ROR byte ptr BETA, 1
Pointers:
1. The number of bits to be rotated can be specified as a constant of 1 (only a constant value
of 1 is allowed) or in register CL. Register CL is used if more than 1 bit is to be rotated.
2. CF is part of the rotate operation. This means that the CF is rotated into the MSB of the
operand and the LSB of the operand goes to CF.
3. OF is undefined if more than 1 bit is rotated. If only 1 bit is rotated, OF is cleared to 0 if
the sign bit retains its original value; otherwise, it is set to 1.
4. Only CF and OF are affected, the rest are not.
5. For an 8-bit operand, when rotating it to the right 9 times, the value of the destination
operand will remain the same. For a 16-bit operand, when rotating it to the right 17 times,
the destination operand will remain the same.
6. If the destination operand is a memory location, the prefix byte ptr or word ptt should
appear after the RCR instruction to denote the data size of the destination operand.
Example 1: Assume that CF = 1.
MOV AL, 04H
RCR AL, 1
Solution:
MOV AL, 04H

ROR AL, 1

After the execution, AL = 82H. The flags will be: CF = 0, OF = 1


Example 2:
MOV AL, 55H
MOV CL. 03H
RCR AL, CL
Solution:
MOV AL, 55H

MOV CL. 03H


RCR AL, CL
CL = 1

CL = 2

CL = 3

After the execution, AL = 4AH. The flags will be: CF = 0, OF = undefined

You might also like