SHR对寄存器高字节的影响

Yot*_*lad 0 x86 assembly x86-16

例如AH,当移位较高字节的位时,弹出的位会直接移动到CF,或者它会先进入低位字节,例如,AL

Cod*_*ray 6

移位总是将指定方向的字节移出寄存器.最后一个移位的位移入进位标志(CF).这些都记录在英特尔移位说明手册中(此页面包含该文档的镜像).

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

操作目标寄存器.处理器AH完全独立地AX(并因此AL)处理该操作的目的.虽然这是事实,ALAH给你"视图"上的完整的16位的下部和上部8位AX的寄存器,如果指定这些8位寄存器作为操作数中的一个的指令时,指令将操作上部分登记.

也许你在使用旋转操作混淆移位操作?这些仍然独立于所有其他寄存器处理目标寄存器,但它们基本上实现了循环移位,使得从一端移出的位被旋转回到值的另一端.

  • 我想提到部分寄存器的别名和重命名,但是这个问题被标记为[intel-8088],所以我假设这在这里是无关紧要的,并且会不必要地混淆. (3认同)