装配8086中的SAL/SAR与SHR/SAR

Abr*_*rar 5 assembly opcode x86-16

我正在学习汇编语言(特定于x86).我已经理解 SAL并且 SHL以类似的方式工作(清除lsb并将msb携带到CF)从这里开始在80x86中SHL和SAL之间的区别.

考虑到SHR并且SAR不以类似的方式操作(后者保持msb不变).

我想大概有一个明确的概念,为什么的功能移位算术右移 SAR定义不同右移 SHR,但在同一时间SHL ,并 SAL保持与类似的功能?

har*_*old 9

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

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