之前的笔记搬运
将操作数移动一位或多位,分成逻辑移位(无符号数操作)和算术移位(有符号数操作),分别具有左移或右移操作,
移动的位数一旦超过自身宽度,则数据置0
算术移位指令
SAL 算术左移 移动次数最后一次的 最高位存进CF
低位空下的位补0,该指令会在编译时被替换成SHL
SAR 算术右移 移动次数最后一次的 最低位存进CF 高位空下的位用移位前最高位补
逻辑移位指令
SHL 逻辑左移 同SAL, 移动次数最后一次的 最高位存进CF 低位空下的位补0
SHR 逻辑右移 移动次数最后一次的 最低位存进CF 高位空下的位用0补位
循环移位指令
ROL 循环左移 移动最后一次的最高位存进CF, 并且用于填充低位空下的位
ROR 循环右移 移动最后一次的最低位存进CF, 并且用于填充高位空下的位
带进位的循环移位指令
RCL 带进位循环左移 最后一次移动的最高位存进CF, 原来的CF的值用于最低位补位
RCR 带进位循环右移 最后一次移动的最低位存进CF, 原来的CF的值用于最高位补位