Изменить только младший бит ячейки памяти - PullRequest
1 голос
/ 21 февраля 2011

Можно ли написать последовательность инструкций, которая будет размещать 1 в младшем значащем бите ячейки памяти по адресу B3, не затрагивая другие биты в ячейке памяти?

Машинные инструкции, которыми я являюсьэто СТОП, ДОБАВИТЬ, ВЫКЛЮЧАТЬ, ОСТАНОВИТЬ, ЗАГРУЗИТЬ, ВРАЩАТЬ и т. д.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

Я думаю, ORing с 1 сделает работу не так:
algo:

byte = [данные в 0xB3]
byte = byte |0x01

это прекрасно работает при разработке для 8051 MCU.

0 голосов
/ 21 февраля 2011

Уточнение: этот вопрос был изначально помечен C # ; поскольку это был не ПП, который пометил его, я оставлю это здесь, пока намерения ПП не станут более ясными.

C # - это язык программирования высокого уровня, который компилируется в IL, а не в машинный код. Таким образом: нет, абсолютно нет поддерживаемого механизма для выполнения определенных операций машинного кода (и даже если бы он был, он не мог бы портировать между языками).

Вы можете выполнять операции высокого уровня бит, используя операторы на целочисленных типах; и если вы действительно хотите, вы можете написать IL, либо создав его вручную (ilasm), либо во время выполнения с помощью DynamicMethod / ILGenerator - но они все еще имеют дело только с кодами операций CIL, а не с машинными кодами.

...