操作碼 |
指令 |
說明 |
0F BD |
BSR r16,r/m16 |
在 r/m16 上進行位反向掃瞄 |
0F BD |
BSR r32,r/m32 |
在 r/m32 上進行位反向掃瞄 |
在源運算元(第二個運算元)中搜索最高有效設定位(1 位)。如果找到最高有效 1 位,則將它的位索引儲存到目標運算元(第一個運算元)。源運算元可以是暫存器或記憶體位置;目標運算元是暫存器。位索引是從源運算元的位 0 算起的無符號偏移量。如果源運算元的內容為 0,則目標運算元的內容未定義。
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;
如果源運算元的所有位都是 0,則 ZF 標誌設定為 1;否則清除 ZF 標誌。CF、OF、SF、AF 及 PF 標誌未定義。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS 或 GS 暫存器包含空的段選擇器。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果啟用對齊檢查並在目前特權級別為 3 時進行未對齊的記憶體引用。
#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS - 如果記憶體運算元有效地址超出 SS 段限制。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。