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

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

Kommed

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

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

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

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

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

angrydevil

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

Surok

New member
22.06.2008
1
0
#3
Допустим нужно проверить 3 бит переменной var.

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

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

...
or var, 4
...

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

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