3-42
INSTRUCTION SET REFERENCE
BSRBit Scan Reverse
Description
This instruction searches the source operand (second operand) for the most significant set bit (1
bit). If a most significant 1 bit is found, its bit index is stored in the destination operand (first
operand). The source operand can be a register or a memory location; the destination operand is
a register. The bit index is an unsigned offset from bit 0 of the source operand. If the contents
source operand are 0, the contents of the destination operand is undefined.
Operation
IF SRC = 0
THEN
ZF
<
1;
DEST is undefined;
ELSE
ZF
<
0;
temp
<
OperandSize 1;
WHILE Bit(SRC, temp) = 0
DO
temp
<
temp
?
1;
DEST
<
temp;
OD;
FI;
Flags Affected
The ZF flag is set to 1 if all the source operand is 0; otherwise, the ZF flag is cleared. The CF,
OF, SF, AF, and PF, flags are undefined.
Protected Mode Exceptions
#GP(0)
If a memory operand effective address is outside the CS, DS, ES, FS, or
GS segment limit.
If the DS, ES, FS, or GS register contains a null segment selector.
#SS(0)
If a memory operand effective address is outside the SS segment limit.
#PF(fault-code)If a page fault occurs.
#AC(0)
If alignment checking is enabled and an unaligned memory reference is
made while the current privilege level is 3.
Opcode
Instruction
Description
0F BD
BSR r16,r/m16
Bit scan reverse on r/m16
0F BD
BSR r32,r/m32
Bit scan reverse on r/m32