我知道例如BT BX, 0
将BX
寄存器的第一个位转移到进位标志CF。
是不是进位标志被限制为只有0和1的值,因为它是一个标志?
BT
改变CF值从寄存器的第一个位,即使它不保持0或1?
如果有人能在这里写下它是如何工作的,那就太好了!
是,进位标志只有两种可能的值:01、.任何寄存器的任何位也是如此,例如BX
的最低有效位Nr.0。它的值被BT BX,0
复制到CF;顺便说一句,这可以用来测试BX
中的数字是奇数还是偶数:
BT BX,0
JC Odd
Even:
BT是测试是否设置(1
)位(0
)的指令。因此,它只能返回两个值,1或0,这两个值适合(E)FLAG值,该值可以是TRUE(1
)或FALSE(0
)。
因此BT
直接将该位复制到CarryFlag中。
所需位的位置是用指令末尾的直接值给出的——这里是0
,表示BX
中的最低位。
(BT
)不改变被测位。为此,您应该使用BTC、BTR和BTS。