Bit Test
The BT
x86 assembly language instruction stands for Bit Test and was added to the x86 instruction set with the 80386 processor. BT
copies a bit from a given register to the carry flag.{{cite web |url=http://faydoc.tripod.com/cpu/bt.htm| title=BT – Bit Test|accessdate=2011-08-21}}
Example: copy the third least significant bit from EAX to the carry flag
BT EAX, 2
BTS
(Bit Test and Set) operates the same, but also sets the bit in the register,{{cite web |url=http://faydoc.tripod.com/cpu/bts.htm| title=BTS – Bit Test and Set|accessdate=2011-08-21}} while BTR
(Bit Test and Reset) resets it,{{cite web |url=http://faydoc.tripod.com/cpu/btr.htm| title=BTR – Bit Test and Reset|accessdate=2011-08-21}} and BTC
(Bit Test and Complement) flips it.{{cite web |url=http://css.csail.mit.edu/6.858/2010/readings/i386/BTC.htm| title=BTC – Bit Test and Complement|accessdate=2012-11-04}}
Logical Explanation BT
BT SRC, POSITION
SRC
Represent as bits array
POSITION
Represent as numeric position
From Right to Left
Start at 0
CF
Carry Flag
Result
CF = SRC[POSITION]
Logical Explanation BTC
BTC SRC, POSITION
SRC
Represent as bits array for CF Result
Represent as hex for SRC Result
POSITION
Represent as numeric position
From Right to Left
Start at 0
CF
Carry Flag
Result
CF = SRC[POSITION]
XOR SRC, POW(2,POSITION)
References
{{Reflist}}