Основные команды заданы в табл. 10.1
Таблица 10.1. Основные команды для работы с битами
Но-мер |
Назначение |
Код |
Выполняемые действия |
Формируемые флаги |
1 |
Побитовое сложение |
OR |
оп1|=оп2 |
c=0, o=0, z, p, s |
2 |
Побитовое умножение |
AND |
оп1&=оп2 |
c=0, o=0, z, p, s |
3 |
Проверка |
TEST |
оп1&оп2 |
c=0, o=0, z, p, s |
4 |
Побитовое Отрицание |
NOT |
~оп1 |
Флаги не изменяются |
5 |
Сложение по модулю 2 |
XOR |
оп1^=оп2 |
c=0, o=0, z, p, s |
Примеры использования команд.
Пример1. Записать команды для:
· установки в 1 заданного бита в байте;
· установки в 0 заданного бита в слове;
· инвертирования заданного бита в двойном слове;
· проверки заданного бита в двойном слове;
Пусть номер бита является константой
BitNumber EQU 3
b db 37h
w dw 1234h
d1 dd 12345678h
d2 dd 12345678h
...
; установка в 1 заданного бита в байте
OR b, 1 SHL BitNumber
; установка в 0 заданного бита в слове
AND w, NOT (1 SHL BitNumber)
; инвертирование заданного бита в двойном слове
XOR d1, 1 SHL BitNumber
проверка заданного бита в двойном слове
TEST d2, 1 SHL BitNumber
jz zero
...
zero:
Пример 2.
Задан массив байтов. Переписать в другой массив те байты первого массива, в которых биты 0 и 4 единичные, биты 1, 3, 7 - нулевые, значения остальных битов не имеет значения.
Для решения этой задачи сформируем маски для выделения требуемых битов и проверки заданных битов на 1. Первая маска может быть сформирована так:
(1 shl 0) or (1 shl 4) or (1 shl 1) or (1 shl 3) or (1 shl 7).
Вторая маска имеет вид:
(1 shl 0) or (1 shl 4).
Ideal
p386
model flat
extrn ExitProcess:proc
dataseg
a db 11h, 12h, 23h, 34h, 56h, 78h, 90h, 0a1h, 0b2h, 0c3h, 0d4h, 0e5h