Ассемблер - битовые операции

  • Автор темы Kommed
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kommed

Здравствуйте! Есть задача: "Реализуйте логическую арифметику, при которой в одном слове хранилось бы 16 логических переменных(ассемблерная вставка на С++)". Идея, насколько я понял, такая - имеем слово(скажем просто в виде обычной глобальной переменной), устанавливаем, скажем второй бит (начиная счёт битов с единицы)

OR <НАША_ПЕРЕМЕННАЯ>, 2
,
сбросить -

AND <НАША_ПЕРЕМЕННАЯ>,NOT 2
,
проверить -

TEST <НАША_ПЕРЕМЕННАЯ>, 2

Надо же передавать номер бита и сдвигать на столько битов единицу(мы ведь не можем работать с произвольным битом - только с крайним, или я ошибаюсь?).
А как придать этому всему ясную форму, скажем, подпрограммы, я не совсем понимаю.
Буду очень признателен за любую помощь.
 
A

angrydevil

зайди на мотфан.ру. это форум модераторов телефонов моторола. там сидят сотни людей, которые каждый день ковыряют прошивки своих телефонов ассемблером. они тебе очень много по этому поводу могут рассказать.
 
S

Surok

Допустим нужно проверить 3 бит переменной var.

...
mov ax,var
and ax, 4
cmp ax, 0
jnz ... ;3-й бит в "1"
...

установить 3-й бит в "1"

...
or var, 4
...

сбросить 3-й бит

...
and var,0FBh
...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!