* better
[mascara-docs.git] / hw / i386.reference / BSF.htm
blob5dd904386001e6f3bb7f2700403aa5b702c839e1
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>80386 Programmer's Reference Manual -- Opcode BSF</TITLE>
5 </HEAD>
6 <BODY>
7 <B>up:</B> <A HREF="c17.htm">
8 Chapter 17 -- 80386 Instruction Set</A><BR>
9 <B>prev:</B><A HREF="BOUND.htm"> BOUND Check Array Index Against Bounds</A><BR>
10 <B>next:</B><A HREF="BSR.htm"> BSR Bit Scan Reverse</A>
11 <P>
12 <HR>
13 <P>
14 <H1>BSF -- Bit Scan Forward</H1>
16 <PRE>
17 Opcode Instruction Clocks Description
19 0F BC BSF r16,r/m16 10+3n Bit scan forward on r/m word
20 0F BC BSF r32,r/m32 10+3n Bit scan forward on r/m dword
21 </PRE>
23 <H2>Notes</H2>
25 is the number of leading zero bits.
27 <H2>Operation</H2>
29 <PRE>
30 IF r/m = 0
31 THEN
32 ZF := 1;
33 register := UNDEFINED;
34 ELSE
35 temp := 0;
36 ZF := 0;
37 WHILE BIT[r/m, temp = 0]
39 temp := temp + 1;
40 register := temp;
41 OD;
42 FI;
43 </PRE>
45 <H2>Description</H2>
47 BSF scans the bits in the second word or doubleword operand starting with
48 bit 0. The ZF flag is cleared if the bits are all 0; otherwise, the ZF flag
49 is set and the destination register is loaded with the bit index of the
50 first set bit.
52 <H2>Flags Affected</H2>
54 ZF as described above
56 <H2>Protected Mode Exceptions</H2>
58 #GP(0) for an illegal memory operand effective address in the CS, DS, ES,
59 FS, or GS segments; #SS(0) for an illegal address in the SS segment;
60 #PF(fault-code) for a page fault
62 <H2>Real Address Mode Exceptions</H2>
64 Interrupt 13 if any part of the operand would lie outside of the effective
65 address space from 0 to 0FFFFH
67 <H2>Virtual 8086 Mode Exceptions</H2>
69 Same exceptions as in Real Address Mode; #PF(fault-code) for a page fault
72 <P>
73 <HR>
74 <P>
75 <B>up:</B> <A HREF="c17.htm">
76 Chapter 17 -- 80386 Instruction Set</A><BR>
77 <B>prev:</B><A HREF="BOUND.htm"> BOUND Check Array Index Against Bounds</A><BR>
78 <B>next:</B><A HREF="BSR.htm"> BSR Bit Scan Reverse</A>
79 </BODY>