-1

我知道例如BT BX, 0将寄存器的第一位传输BX到进位标志 CF。

进位标志不是仅限于值 0 和 1,因为它是一个标志吗?

是否BT会从寄存器的第一位更改 CF 值,即使它不包含 0 或 1?

如果有人能够在这里写下它是如何工作的,那就太好了!

4

2 回答 2

4

BT是用于测试某个位是否已设置(1)或未设置( )的指令0。因此它只能返回两个值,一个或零,它们适合 (E)FLAG 值,该值可以是 TRUE( 1) 或 FALSE( 0)。

所以BT直接把这个位复制到CarryFlag中。
所需位的位置由指令末尾的立即数给出 - 这里是0BX.

BT不会更改测试的位。为此,您应该使用BTCBTRBTS。)

于 2021-09-07T18:08:04.847 回答
4

是的,进位标志只能有两个可能值之一:01。任何寄存器的任何位也是如此,例如 的最低有效位 Nr.0 BX。它的值被复制BT BX,0到CF;顺便说一句,这可以用来测试数字BX是奇数还是偶数:

    BT BX,0
    JC Odd
Even:
于 2021-09-07T18:10:06.427 回答