大家好,又见面了,我是你们的朋友全栈君。
本文转载自:https://blog.csdn.net/richerg85/article/details/27558005
SHL、SHR、SAL、SAR: 移位指令
代码语言:javascript复制
代码语言:javascript复制;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, 高位不变
;它们的结果影响 OF、SF、ZF、PF、CF
;它们的指令格式相同:
SHL r/m, i8
SHL r/m, CL
ROL、ROR、RCL、RCR: 循环移位指令
代码语言:javascript复制
代码语言:javascript复制;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
使用的时候务必区别清楚:
逻辑移位指令移出位进CF,缺位补0;算术移位时若缺低位,则补0,若缺高位,则保持该位不变。
循环移位指令中,rol与ror是不带cf位的循环移位,rcl与rcr是带cf位的循环移位。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133176.html原文链接:https://javaforall.cn