logo

Система команд x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

BT

Проверка бита

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

?

     

?

?

?

?

*

 

Код

Команда

Описание

Проц.

Пример

0F A3

BT r/m16,r16

Сохранить выбираемый r16 бит r/m16 в CF

Intel386

bt [di],ax

0F A3

BT r/m32,r32

Сохранить выбираемый r32 бит r/m32 в CF

Intel386

bt edi,eax

0F BA /4 ib

BT r/m16,imm8

Сохранить выбираемый imm8 бит r/m16 в CF

Intel386

bt bx,3

0F BA /4 ib

BT r/m32,imm8

Сохранить выбираемый imm8 бит r/m32 в CF

Intel386

bt edx,17

Операция:

CF = BIT[LeftSRC, RightSRC];

Описание:

Команда BT сохраняет значение одного бита из первого операнда во флаге CF. Позиция сохраняемого бита из первого операнда находится во втором операнде.

Значение индекса выбираемого бита может быть представлено непосредственным значением в команде BT или значением в общем регистре. В этой команде используется только 8-битное непосредственное значение. Значение этого операнда берется по модулю 32, таким образом смещение битов находится в диапазоне от 0 до 31. Это позволяет выбирать любой бит внутри регистра. Для битовых строк в памяти это поле непосредственного значения дает только смещение внутри слова или двойного слова.

Некоторые ассемблеры поддерживают значения битовых смещений больше 31, используя поле непосредственного значения imm8 в комбинации с полем смещения операнда в памяти disp. В этом случае ассемблером младшие 3 или 5 битов (3 для 16-битных операндов, 5 для 32-битных операндов) смещения бита (второй операнд команды) сохраняются в поле непосредственного операнда, а старшие биты сдвигаются и комбинируются с полем смещения. Процессор же игнорирует ненулевые значения старших битов поля imm8.

При доступе к памяти процессор обращается к четырем байтам, начинающимся по полученному следующим образом адресу:

Effective Address + (4 * (BitOffset DIV 32))

для размера операнда 32 бита, или к двум байтам, начинающимся по адресу:

Effective Address + (2 * (BitOffset DIV 16))

для 16-битного размера операнда. Такое обращение происходит, даже если необходим доступ только к одиночному байту. Поэтому, избегайте ссылок к областям памяти, близким к пустым адресным пространствам. В частности, избегайте ссылок на распределенные в памяти регистры ввода-вывода. Вместо этого используйте команду MOV для загрузки и сохранения значений по таким адресам и регистровую форму команды BT для работы с данными.

Особые ситуации защищенного режима:

#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) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU



Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники