匯編移位指令包括:
SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR
SHL、SHR、SAL、SAR:
SHL(Shift Left):邏輯左移
SHR(Shift Right):邏輯右移
SAL(Shift Arithmetic Left):算術左移
SAR(Shift Arithmetic Right):算術右移
其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同.
SHL、SAL: 每位左移, 低位補 0, 高位(即移出的那位)進 CF
SHR: 每位右移, 低位進 CF, 高位補 0
SAR: 每位右移, 低位進 CF, 高位(即符號位)不變
eg:AL=1000,BL=1000,CL=2
SHR AL,CL 此后AL=0010
SAR BL,CL 此后BL=1110
它們的結果影響 OF、SF、ZF、PF、CF
它們的指令格式相同:
SHL r/m, i8
SHL r/m, CL
ROL、ROR、RCL、RCR:
ROL(Rotate Left):循環左移
ROR(Rotate Right):循環右移
RCL(Rotate through Carry Left):帶進位循環左移
RCR(Rotate through Carry Right):帶進位循環右移
ROL: 循環左移, 高位到低位並送 CF
ROR: 循環右移, 低位到高位並送 CF
RCL: 循環左移, 進位值(原CF)到低位, 高位進 CF
RCR: 循環右移, 進位值(原CF)到高位, 低位進 CF
它們的結果影響 OF、CF
它們的指令格式相同:
SHL r/m, i8
SHL r/m, CL