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

标签 assembly x86

我看到了下一个代码:

shr AL, 1
   jnc bit_0
由于shr指令,我不知道何时打开进位标志吗?
谢谢

最佳答案

shr AL, 1AL中的所有位右移一位。

原始的最右边的位从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
 +------------------------+               +------------------------+

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

My book gives the next example: Before shift: AL = 10101110 ; shr AL, 1 ; After shift: 01011100, CF = 1 ; Is it mistake?



如果那是它的意思,那么是的。那是左移(shl AL, 1),而不是右移:AL中的位都已向左移动一位,并且进位标志已设置为从左端移出的位。

关于assembly - 汇编-shr指令打开进位标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824030/

相关文章:

linux - 汇编语言中的指针

assembly - 不带 hlt 的 HLT 指令

c - 兼容 C90 的编译器是否必须考虑 CPU 的指令重新排序?

assembly - MASM (8086) 汇编语言行延续

c++ - 为什么在 32 位 x86 架构上默认对齐 `int64_t` 8 字节?

assembly - 第一次学习汇编,这是说一个字的大小是8个字节吗?

assembly - 我什么时候应该单独使用 AESIMC,而不是使用 AESDEC

c - 有什么办法可以分析x86汇编源码中寄存器 "type"吗?

assembly - 切换到 32 位保护模式导致 QEMU 循环重启

x86 - AVX2中广播高字