<<<    Index    >>>
3-40
INSTRUCTION SET REFERENCE
BSF—Bit Scan Forward
Description
This instruction searches the source operand (second operand) for the least significant set bit (1
bit). If a least 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 
<
 0;
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 BC
BSF r16,r/m16
Bit scan forward on r/m16
0F BC
BSF r32,r/m32
Bit scan forward on r/m32
<<<    Index    >>>