2012-10-20 66 views
-1

我可以在任何大小的asm中創建數組。 OK可以創建一個布爾數組。所以這裏是我的問題:我如何解決我的陣列位(我)?布爾數組在asm

+2

什麼架構? – mattjgalloway

+2

您應該添加更多細節(例如,您正在使用的編譯器,目標體系結構,數組定義的方式等)。 – Mario

+0

x86 yasm/nasm語法。例如,我們定義了 – Flame239

回答

0

僞代碼(因爲沒有指定體系結構):

訪問I(TH)位:

考慮的bool是在寄存器中的一組標誌:其中0 =假,1 =真

考慮的8位機:


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 
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)使用更大的蒙版。

方式二 - BT*

bts [array], x ; x-th but will be set, previous state will be stored @ CF