当移位较高字节的位(例如AH
)时,弹出的位将直接移至CF
,或者它将首先进入低位字节,例如{{1} }}?
答案 0 :(得分:6)
移位始终按指定方向移位字节, out 寄存器。最后一个移位的位移入进位标志(CF
)。这些都记录在英特尔移位指令手册中(this page包含该文档的镜像)。
因此,执行SHR ah, 1
会将弹出的(最低有效)位移入进位标志,并将新空(最高有效)位设置为0.
仅操作目标寄存器。出于此操作的目的,处理器完全独立于AH
(因此AX
)处理AL
。虽然AL
和AH
确实为完整的16位AX
寄存器的低8位和高8位提供了“视图”,但如果指定其中一个为8-位寄存器作为指令的操作数,指令仅对该部分寄存器进行操作。
也许您对rotate operations的转换操作感到困惑?它们仍然独立于所有其他寄存器处理目标寄存器,但它们基本上实现了循环移位,这样一端移出的位被旋转回值的另一端。