shl和shr是逻辑移位指令。
shl是逻辑左移指令,它的功能为:
(1)将一个寄存器或内存单元中的数据向左移位;
(2)将最后移出的一位写入CF中;
(3)最低位用0补充。
指令:
mov al,01001000b
shl al,1 ;将al中数据左移一位
执行后(al)=10010000b,CF=0。
注意:
如果移动位数大于1时,必须将移动位数放在cl中。
比如,指令:
mov al,01010001b
mov cl,3
shl al,cl
执行后(al)=10001000b,因为最后移出的一位是0,所以CF=0。
shr是逻辑右移指令,它和shl所进行的操作刚好相反。