BT指令与进位标志CF的连接



我知道例如BT BX, 0BX寄存器的第一个位转移到进位标志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。

最新更新