Очистка битов в регистре в сборке - PullRequest
5 голосов
/ 16 июля 2010

Как записать инструкцию, которая очищает биты 0 и 1 в регистре AL, используя сборку?

Ответы [ 6 ]

6 голосов
/ 16 июля 2010

AND AL, 11111100b в предположении формата MASM

3 голосов
/ 16 июля 2010

AL - младший байт регистра AX, поэтому вы должны иметь возможность AND AL 0xFC, чтобы маскировать младшие биты.

AND AL,0xfc
2 голосов
/ 20 июля 2010

Вы можете очистить биты с помощью операции AND.

for each bit index `i`
  result[i] = boolean_and(first[i], second[i])

.--------- commonly associated symbol for the operation
|

&   1 0 <- first argument
-------
1 | 1 0 <- result
0 | 0 0

^--------- second argument

Пример с байтом:

00101100
00111010
       &
00101000

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

x86 mnemonic: AND a, b
operation: a = a & b

Вот как это сделать, если вы еще этого не поняли:

AND eax, 0xfffffffc

AL является младшей байтовой частью EAX-регистра, поэтому вы можете сделать это следующим образом.

Вот двоичная таблица -> шестнадцатеричная таблица преобразования:

0000 | 0
0001 | 1
0010 | 2
0011 | 3
0100 | 4
0101 | 5
0110 | 6
0111 | 7
1000 | 8
1001 | 9
1010 | a
1011 | b
1100 | c
1101 | d
1110 | e
1111 | f

О, и вы должны помнить этоесли вы собираетесь быть уважающим себя ассемблером-программистом.

Также прочитайте об операциях OR и XOR-bit.

0 голосов
/ 02 декабря 2011

есть другой способ сделать это с помощью xor пример:

mov al, ff

xor al, 00000011b    

al = fc because we cleared bit 0 and 1
0 голосов
/ 16 июля 2010

приравнять его к нулю?

как

Мовл, 00000000

Ax = 16bits аль = 8bits

теперь, если что-то написано с помощью всех, ответ будет таким же, как и у

но

если что-то будет добавлено с al, ответом будет "0"

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

0 голосов
/ 16 июля 2010
and al, 0xFD

Приспособьте его к ассемблеру, который вы используете: газ, нос, масса ...

РЕДАКТИРОВАТЬ: На самом деле это and al, 0xFC, но вы понимаете,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...