更新时间:2024-03-09 01:47
SHL是一个汇编指令,作用是逻辑左移指令,将目的操作数顺序左移1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移入进位标志位CF,最低位补零。
SHL是Shift Logical Left的缩写。
功能:将一表达式的值左移
方式:MASM, Ideal
语法:表达式”SHL“计数”
说明:“表达式”和“计数”的求值结果一定是常量。SHL对表达式中各位进行逻辑左移,移完后右边空出各位都填成0;从左边移出的各位就都丢失了。负的计数引起数据按相反的方向移动。
例子: mov al,00000011b SHL 3; 装入00011000B
或
例如
SHL指令将影响CF和OF两个标志位。如果移位次数为1,且移位后的符号位的值发生变化,则OF=1,否则OF=0.如果移位次数不为1,则OF的值不确定。
移位指令分为逻辑移位指令和算术移位指令,分别具有左移与右移。
SHL逻辑左移;左移,最低位补0,最高位进入CF。
SHR逻辑右移;右移,最高位补0,最低位进入CF。
SAL算术左移;左移,与SHL功能相同。
SAR算术右移;右移,最高位不变(符号位,若为负,则进1),最低位进入CF。
将一个二进制无符号数左移一位相当于将该数乘以2,因此可以利用左移指令完成乘某些常数的运算。移位指令比乘法指令的执行速度要快得多,但是在使用时应该注意移位后结果不应该超出该操作数的表示范围。
现在计算机中的数都是补码表示,shl就相当于乘二。
例如