----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||0F BB BTC r/m16,r16 6/13 Сохранение бита во флаге || переноса и его дополнение ||0F BB BTC r/m32,r32 6/13 Сохранение бита во флаге || переноса и его дополнение ||0F BA/7 ib BTC r/m16,imm8 6/8 Сохранение бита во флаге || переноса и его дополнение ||0F BA/7 ib BTC r/m32,imm8 6/8 Сохранение бита во флаге || переноса и его дополнение |---------------------------------------------------------------- Работа команды CF <- BIT[LeftSRC,RightSRC];BIT[LeftSCR, RightScr] <- NOT BIT[LeftSCR, RightSCR] ОписаниеКоманда BT сохраняет значение бита, задаваемого базой (первый операнд) исмещением бита (второй операнд), во флаг CF и затем выполняет дополнениеэтого бита. Изменяемые флагиФлаг CF содержит значение дополнения выбранного бита. Исключения защищенного режима#GP(0), если результат должен помещаться в сегмент, для которого запрещеназапись; #GP(0) в случае недопустимого исполнительного адреса операндапамяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимогоадреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC дляневыравненной ссылки к памяти при текущем уровне привилегированности,равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3. ПримечанияИндекс выбранного бита может быть задан непосредственной константой вкоманде или значением в регистре общего назначения. В команде может бытьиспользовано только 8-разрядное непосредственное значение. Этот операндберется по модулю 32, так что диапазон непосредственных смещений битасоставляет 0...31. Это позволяет выбор любого бита в регистре. Для строкбитов в памяти это непосредственное поле задает только смещение бита вслове или двойном слове. Непосредственные смещения битов, превышающие 31,поддерживаются использованием поля непосредственного смещения бита вкомбинации с полем смещения в операнде памяти. Младшие от 3 до 5 битынепосредственного смещения бита записываются в поле непосредственногосмещения бита, а старшие биты от 27 до 29 сдвигаются и объединяются сосмещением байта в режиме адресации. При доступе к биту в памяти процессор может выполнить доступ к четырембайтам, начиная с адреса памяти, заданного как Исполнительный адрес + (4 * (BitOffset DIV 32))для размера операнда 32 бита , либо два байта, начиная с адреса памяти,заданного как Исполнительный адрес + (2 * (BitOffset DIV 16))для размера операнда 16 битов. Процессор может поступать таким образомдаже когда для доступа к заданному биту достаточно выполнить доступ всегок одному байту. Следовательно, вы можете избежать ссылок к областямпамяти, близко к разрывам адресного пространства. В частности, избегайтессылок к регистрам ввода/вывода, управляемого памятью. Вместо этого длязагрузки и сохранения в эти адреса используйте команды MOV, а дляманипулирования данными используйте регистровые формы этих команд.