1

我需要位数组中偏移量为 6 的 2 位。

mov eax, [bitarray]; // get address of bit array
shr eax, 6; // clear first 6 bits
shl eax, 30 // clear last 30 bits
shr eax, 30; // move that 2 bits back to start

现在在 eax 中是我需要的这 2 位,对吗?

当我的内存从 0 开始(一个单位是一位)时,位置 0 上的位将在加载到最右边或最左边的寄存器 eax 之后?

4

2 回答 2

3

代替最后的两个班次,您可以使用按位AND

AND EAX,3  ; Keep the original value of the two least significant bits; all
           ; other bits in EAX are cleared.

最左边的位是最重要的一位,最右边的位是最不重要的一位。

于 2013-05-24T15:19:50.670 回答
0

mov eax, [位数组]

位掩码?

mov eax,[bitarray]
mov ebx,C0         ;11000000 binary
and ax,bx
于 2013-05-24T17:01:54.003 回答