Действия над битами
Действия над битами. Для работы с отдельными битами предназначены логические команды: И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ. Эти команды позволяют установить значение некоторого разряда в байте равным 0 или 1 или заменить значение разряда на противоположное. Операции выполняются над каждой парой соответствующих разрядов двух операндов.
Команды ИЛИ выполняют поразрядное логическое сложение операндов, результат помещается на место первого операнда. В результате операции логического сложения в тех битах, в которых хотя бы один из операндов имел 1, установится 1.
Команды И выполняют поразрядное логическое умножение операндов, результат помещается на место первого операнда. Команда И записывает единицы только в те разряды результата, которые в обоих операндах равны единице, а остальные разряды устанавливаются в нуль.
Команды ИСКЛЮЧАЮЩЕЕ ИЛИ выполняют поразрядное сложение по модулю 2 . Результат помещается на место первого операнда. В результате операции в тех битах, где у обоих операндов были различные значения, будут единицы, а в тех битах, где у обоих операндов были одинаковые значения, будут нули.
Команда И может быть использована для того, чтобы установить некоторый бит в нуль. Допустим, в байте SIM необходимо биты 1, 3, б, 7 установить в 0 . Для этого необходимо подготовить двоичную константу 10101100, т. е. константу с нулями в тех разрядах, где необходимы нули, и с единицами в тех разрядах, где необходимо оставить прежнее значение. Если нужно выполнить операцию только с одним байтом, можно использовать команду формата SI. Если записать константу в шестнадцатеричном виде, команда будет выглядеть следующим образом: N1 SIM. X’AC’.
Если требуется установить некоторый бит в единицу, можно использовать команду ИЛИ. Например, необходимо те же разряды в байте SIM установить в единицу. Тогда следует подготовить двоичную константу 01010011, которая содержит единицы в тех разрядах, где необходимо установить единицы, и нули, где нужно оставить прежнее значение, и выполнить следующую команду: 01 SIM. X’53’.
Чтобы инвертировать значение разряда, можно использовать команду ИСКЛЮЧАЮЩЕЕ ИЛИ. Для этого нужно написать такую константу, где были бы единицы в тех битах, которые необходимо инвертировать, и нули в битах, которые должны остаться неизменными, а затем выполнить команду ИСКЛЮЧАЮЩЕЕ ИЛИ. Например, если в байте SIM необходимо инвертировать разряды 1, 3, 6, 7, можно записать следующую команду: XI SIM, X’53’.