SHR对寄存器高字节的影响

时间:2017-07-23 09:22:09

标签: assembly x86 x86-16

当移位较高字节的位(例如AH)时,弹出的位将直接移至CF,或者它将首先进入低位字节,例如{{1} }}?

1 个答案:

答案 0 :(得分:6)

移位始终按指定方向移位字节, out 寄存器。最后一个移位的位移入进位标志(CF)。这些都记录在英特尔移位指令手册中(this page包含该文档的镜像)。

因此,执行SHR ah, 1会将弹出的(最低有效)位移入进位标志,并将新空(最高有效)位设置为0.

操作目标寄存器。出于此操作的目的,处理器完全独立于AH(因此AX)处理AL。虽然ALAH确实为完整的16位AX寄存器的低8位和高8位提供了“视图”,但如果指定其中一个为8-位寄存器作为指令的操作数,指令对该部分寄存器进行操作。

也许您对rotate operations的转换操作感到困惑?它们仍然独立于所有其他寄存器处理目标寄存器,但它们基本上实现了循环移位,这样一端移出的位被旋转回值的另一端。