-1
我可以在任何大小的asm中創建數組。 OK可以創建一個布爾數組。所以這裏是我的問題:我如何解決我的陣列位(我)?布爾數組在asm
我可以在任何大小的asm中創建數組。 OK可以創建一個布爾數組。所以這裏是我的問題:我如何解決我的陣列位(我)?布爾數組在asm
僞代碼(因爲沒有指定體系結構):
訪問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
第一種方式 - 口罩:
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
什麼架構? – mattjgalloway
您應該添加更多細節(例如,您正在使用的編譯器,目標體系結構,數組定義的方式等)。 – Mario
x86 yasm/nasm語法。例如,我們定義了 – Flame239