Команды BT, BTC, BTS, BTR
Группа команд BT, BTC, BTS и BTR используется для работы с отдельными битами своего операнда. Команда BT (Bit) позволяет получить состояние заданного бита своего операнда. Команды BTC (Bit Change), BTS (Bit Set), BTR (Bit Reset) также получают состояние заданного бита, но помимо этого еще выполняют некоторые действия над этим битом.
Команда BT
Синтаксис: | BT op1,op2 |
Операнды: | op1 - r/m16, r/m32 op2 - r16, r32, i8 |
Назначение: | Проверка бита |
Процессор: | 80386+ |
Флаги: | Флаг CF содержит значение проверяемого бита |
Комментарий: | Команда BT позволяет получить значение определенного бита первого операнда. Номер проверяемого бита задается вторым операндом. |
Ограничения: |
Номер бита, получаемый из второго операнда, берется по модулю 32, таким образом значение номера бита не может превысить 31. |
Примеры: |
bt edx,4 bt [eax],cx |
Команда BTC
Синтаксис: | BTC op1,op2 |
Операнды: | op1 - r/m16, r/m32 op2 - r16, r32, i8 |
Назначение: | Проверка бита и инвертирование |
Процессор: | 80386+ |
Флаги: | Флаг CF содержит значение проверяемого бита |
Комментарий: | Команда BTC позволяет получить значение определенного бита первого операнда, а затем инвертирует состояние этого бита в операнде. Номер проверяемого бита задается вторым операндом. |
Ограничения: |
Номер бита, получаемый из второго операнда, берется по модулю 32, таким образом значение номера бита не может превысить 31. |
Примеры: |
btc edx,4 btc [eax],cx |
Команда BTS
Синтаксис: | BTS op1,op2 |
Операнды: | op1 - r/m16, r/m32 op2 - r16, r32, i8 |
Назначение: | Проверка бита и установка |
Процессор: | 80386+ |
Флаги: | Флаг CF содержит значение проверяемого бита |
Комментарий: | Команда BTS позволяет получить значение определенного бита первого операнда, а затем устанавливает значение этого бита равным единице. Номер проверяемого бита задается вторым операндом. |
Ограничения: |
Номер бита, получаемый из второго операнда, берется по модулю 32, таким образом значение номера бита не может превысить 31. |
Примеры: |
bts edx,4 bts [eax],cx |
Команда BTR
Синтаксис: | BTR op1,op2 |
Операнды: | op1 - r/m16, r/m32 op2 - r16, r32, i8 |
Назначение: | Проверка бита и сброс |
Процессор: | 80386+ |
Флаги: | Флаг CF содержит значение проверяемого бита |
Комментарий: | Команда BTR позволяет получить значение определенного бита первого операнда, а затем сбрасывает этот бит в нулевое значение. Номер проверяемого бита задается вторым операндом. |
Ограничения: |
Номер бита, получаемый из второго операнда, берется по модулю 32, таким образом значение номера бита не может превысить 31. |
Примеры: |
btr edx,4 btr [eax],cx |
Комментарии (1)
- К. - 2023-06-27 09:56:22
- В сведениях на этой странице есть одна ошибка и одна неточность. 1. "Номер бита, получаемый из второго операнда, берется по модулю 32, таким образом значение номера бита не может превысить 31". — Это относится только к команде с 32-битными операндами (для 16-битных - по модулю 16), и НЕ ОТНОСИТСЯ к форме команды, первый операнд которой есть ячейка памяти, а второй - регистр. В последнем случае к адресу прибавляется второй операнд, делённый на 8, и в байте по этому адресу берётся бит, номер которого равен второму операнду по модулю 8. Иными словами, номер бита не имеет ограничений. 2. Не сказано, что разрядности первого и второго операнда обязаны совпадать (либо оба 16 бит, либо оба 32). Так, в приведённом примере btr [eax],cx на самом деле подразумевается команда btr word ptr [eax],cx