SAL/SAR 与 SHR/SAR 在程序集 8086 中

SAL/SAR vs SHR/SAR in assembly 8086

我正在学习汇编语言(特定于 x86)。我明白了 SALSHL 从这里 Difference between SHL and SAL in 80x86.

以类似的方式工作(清除 lsb 并将 msb 携带到 CF)

考虑到 SHRSAR 的操作方式不同(后者保持 msb 不变)。

我想清楚地了解为什么 右移算术 SAR 的功能定义不同于Shift Right SHR 但同时 SHLSAL 保持相似的功能?

因为在左移的情况下没有什么可保留的。在那些左移改变符号的情况下(你可能想以某种方式阻止),没有溢出的结果将不适合寄存器(这是自动的 - 如果它适合,那么它就不会溢出到首先)。所以无论如何你都无能为力。

但是右移不能溢出,它会使数字变小(或者保持不变)。所以现在你可以选择,我是否保留最高位。