SAL/SAR 与 SHR/SAR 在程序集 8086 中
SAL/SAR vs SHR/SAR in assembly 8086
我正在学习汇编语言(特定于 x86)。我明白了
SAL
和 SHL
从这里 Difference between SHL and SAL in 80x86.
以类似的方式工作(清除 lsb 并将 msb 携带到 CF)
考虑到 SHR
和 SAR
的操作方式不同(后者保持 msb 不变)。
我想清楚地了解为什么 右移算术 SAR
的功能定义不同于Shift Right SHR
但同时 SHL
和 SAL
保持相似的功能?
因为在左移的情况下没有什么可保留的。在那些左移改变符号的情况下(你可能想以某种方式阻止),没有溢出的结果将不适合寄存器(这是自动的 - 如果它适合,那么它就不会溢出到首先)。所以无论如何你都无能为力。
但是右移不能溢出,它会使数字变小(或者保持不变)。所以现在你可以选择,我是否保留最高位。
我正在学习汇编语言(特定于 x86)。我明白了
SAL
和 SHL
从这里 Difference between SHL and SAL in 80x86.
考虑到 SHR
和 SAR
的操作方式不同(后者保持 msb 不变)。
我想清楚地了解为什么 右移算术 SAR
的功能定义不同于Shift Right SHR
但同时 SHL
和 SAL
保持相似的功能?
因为在左移的情况下没有什么可保留的。在那些左移改变符号的情况下(你可能想以某种方式阻止),没有溢出的结果将不适合寄存器(这是自动的 - 如果它适合,那么它就不会溢出到首先)。所以无论如何你都无能为力。
但是右移不能溢出,它会使数字变小(或者保持不变)。所以现在你可以选择,我是否保留最高位。