Assembly 汇编-位数组中的第一位

Assembly 汇编-位数组中的第一位,assembly,Assembly,我需要从位数组中偏移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之后?

我需要从位数组中偏移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之后?

而不是最后的两个移位,您可以使用位

AND EAX,3  ; Keep the original value of the two least significant bits; all
           ; other bits in EAX are cleared.
最左边的位是最高有效位,最右边的位是最低有效位。

mov eax,[bitarray]

比特面具

mov eax,[bitarray]
mov ebx,C0         ;11000000 binary
and ax,bx

是的,我知道最左边的是最重要的,但如果有小的尾数,那么在内存中,寄存器中最左边的位在哪里?在位置0或位置7?端序不影响字节内位的顺序。它会影响一个字/dword/等的字节顺序。一个字节的最高有效位是位7。哦,我现在看到了,如果你正在使用3michael:是的,那么内存中的第一位不是eax中的第一位?我认为这很糟糕,应该用值3(00000011)进行AND