移位指令
- 逻辑左移 SHL OPR CNT
mov al,01001000b
shl al,1
最高位给进位标志CF ,后面7位左移一位,最后一位补0
- 循环左移 ROL OPR,CNT
将最高位给进位CF,后面的向左移一位,最后一位是最高位
- 逻辑右移 SHR OPR,CNT
最低位移到进位CF中,其他向左移动,最高位补0
- 循环右移 ROR OPR,CNT
最低位给CF,其他向右移,最高位由最低位给
- 算术左移 SAL OPR,CNT
最高位给进位CF,其他左移,最低位补0
- 算术右移 SAR OPR,CNT
最低位给进位CF,最高位不变
- 带进位循环左移 RCL OPR,CNT
最高位给进位CF,最低位是由CF给出
- 带进位循环右移RCL OPR,CNT
最低位给进位CF,最高位由CF给出
例子
SHL OPR,CNT 将OPR逻辑左移CNT位,就是将寄存器或内存单元中的数据向左移位
mov al, 01010001b
mov cl,3
shl al,cl ;移动位数大于1是必须用cl
0 1 0 1 0 0 0 1
0 1 0 0 0 1 0 0 0
CF