Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
BSR
Влияние команды на флаги и форматы команды:
? |
? |
* |
? |
? |
? |
0F BD |
BSR r16,r/m16 |
Сканирование битов r/m16 назад |
Intel386 |
bsr ax,bitmask |
0F BD |
BSR r32,r/m32 |
Сканирование битов r/m32 назад |
Intel386 |
bsr eax,edx |
Описание:
Команда BSR сканирует биты второго операнда (слово или двойное слово), начиная с наиболее значащего бита, и заканчивая наименее значащим. Если все биты равны нулю, то устанавливается флаг ZF, в противном случае, флаг ZF сбрасывается и в регистр назначения (первый операнд) помещается номер первого установленного бита, найденного при сканировании в обратном направлении.
Операция:
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;
Особые ситуации защищенного режима:
#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS или GS;
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
Особые ситуации режима реальной адресации:
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
Особые ситуации режима V86:
Такие же, как и в режиме реальной адресации.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru