-1

任意のサイズのasmで配列を作成できます。OK、boolの配列を作成しましょう。だからここに私の質問があります:どうすれば私の配列のi(番目)ビットをアドレス指定できますか?

4

2 に答える 2

0

最初の方法-マスク:

or byte ptr [array+x], %mask% ; %mask% - any value that 1 byte can hold (i.e.: 40h - 1100 0000, 7th & 8th bit will be set on little-endian architecture)

明らかに、WORD、DWORD(またはx64のQWORD)でより大きなマスクを使用できます。

2番目の方法-BT*

bts [array], x ; x-th but will be set, previous state will be stored @ CF
于 2012-10-20T15:46:57.943 に答える
0

擬似コード(アーキテクチャが指定されていないため):

i(番目)ビットへのアクセス:

boolsをレジスタ内のフラグのセットと見なします。ここで、0=falseおよび1=true

8ビットマシンを考えてみましょう。

            76543210
registerA = 00100100
-----------------------

-----------------------
To access 5th bit      : if ((00100100 & 00100000)>>5) == 1: 5th bit is true; else: false
To access 6th bit      : if ((00100100 & 01000000)>>6) == 1: 6th bit is true; else: false
similarly for nth bit  : if (((number)&(1 << n)) >> n) == 1: nth bit is true; else: false
于 2012-10-20T11:06:02.793 に答える