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