61 lines
2.3 KiB
HTML
61 lines
2.3 KiB
HTML
<html><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
|
<html>
|
|
|
|
<head>
|
|
<title>80386 Programmer's Reference Manual -- Opcode BSR</title>
|
|
</head>
|
|
|
|
<body>
|
|
<b>up:</b> <a href="C17.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C17.HTM">Chapter 17 -- 80386 Instruction Set</a><br>
|
|
<b>prev:</b><a href="BSF.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/BSF.HTM"> BSF Bit Scan Forward</a><br>
|
|
<b>next:</b><a href="BT.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/BT.HTM"> BT Bit Test</a>
|
|
<p>
|
|
<hr>
|
|
<p>
|
|
<h1>BSR -- Bit Scan Reverse</h1>
|
|
<pre>
|
|
|
|
|
|
|
|
Opcode Instruction Clocks Description
|
|
|
|
0F BD BSR r16,r/m16 10+3n Bit scan reverse on r/m word
|
|
0F BD BSR r32,r/m32 10+3n Bit scan reverse on r/m dword
|
|
</pre>
|
|
<h2>Operation</h2>
|
|
<pre>
|
|
|
|
|
|
|
|
IF r/m = 0
|
|
THEN
|
|
ZF := 1;
|
|
register := UNDEFINED;
|
|
ELSE
|
|
temp := OperandSize - 1;
|
|
ZF := 0;
|
|
WHILE BIT[r/m, temp] = 0
|
|
DO
|
|
temp := temp - 1;
|
|
register := temp;
|
|
OD;
|
|
FI;
|
|
</pre>
|
|
<h2>Description</h2>
|
|
BSR scans the bits in the second word or doubleword operand from the most significant bit to the least significant bit. The ZF flag is cleared if the bits are all 0; otherwise, ZF is set and the destination register is loaded with the bit index of the first set bit found when scanning in the reverse direction.
|
|
<h2>Flags Affected</h2>
|
|
ZF as described above
|
|
<h2>Protected Mode Exceptions</h2>
|
|
#GP(0) if the result is in a nonwritable segment; #GP(0) for an illegal memory operand effective address in the CS, DS, ES, FS, or GS segments; #SS(0) for an illegal address in the SS segment; #PF(fault-code) for a page fault
|
|
<h2>Real Address Mode Exceptions</h2>
|
|
Interrupt 13 if any part of the operand would lie outside of the effective address space from 0 to 0FFFFH
|
|
<h2>Virtual 8086 Mode Exceptions</h2>
|
|
Same exceptions as in Real Address Mode; #PF(fault-code) for a page fault
|
|
<p>
|
|
<hr>
|
|
<p><b>up:</b> <a href="C17.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C17.HTM">Chapter 17 -- 80386 Instruction Set</a><br>
|
|
<b>prev:</b><a href="BSF.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/BSF.HTM"> BSF Bit Scan Forward</a><br>
|
|
<b>next:</b><a href="BT.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/BT.HTM"> BT Bit Test</a>
|
|
</body>
|
|
|