汇编 - shr指令打开进位标志?

Ada*_* Sh 6 x86 assembly

我看到了下一个代码:

shr AL, 1
   jnc bit_0
Run Code Online (Sandbox Code Playgroud)

由于shr instrucrion,我不明白进位标志何时开启?

谢谢

Mat*_*ery 10

shr AL, 1将所有位移到AL右边的一个位置.

原始最右边的位从AL寄存器移出到进位标志(并且新的最左边的位设置为0).例如:

 +------------------------+               +------------------------+
 | 1  0  0  1  0  1  0  1 |               | 0  1  1  0  0  1  0  0 |
 +------------------------+               +------------------------+
    \  \  \  \  \  \  \  \       or          \  \  \  \  \  \  \  \
     \  \  \  \  \  \  \  \                   \  \  \  \  \  \  \  \
 +------------------------+ CF            +------------------------+ CF
 |(0) 1  0  0  1  0  1  0 | 1             |(0) 0  1  1  0  0  1  0 | 0
 +------------------------+               +------------------------+
Run Code Online (Sandbox Code Playgroud)

在你对另一个答案的评论中:

我的书给出了下一个例子:班前:AL = 10101110; shr AL,1; 班次后:01011100,CF = 1; 这是错的吗?

如果这就是它所说的,那么是的.这是一个左移(shl AL, 1),而不是一个右移:AL所有位都被左移一个位置,进位标志被设置为从左端移出的位.