汇编指令shl进行逻辑左移操作,右边补零
如:
mov ax, 0x15 ; ax = 0001 0101
shl ax, 1; 左移1位,结果ax = 0010 1010 相当于 ax = ax * 2
编译器对高级语言(如c++)进行编译时,如遇到对变量
进行乘以2的幂运算时,编译后常优化为shl.
如下代码:
C/C++ Code复制内容到剪贴板
int a = 0x15;
a = a * 4;
编译后反汇编代码可能为:
mov d
word ptr [a],15h ; a = 0x15
mov eax,d
word ptr [a]
shl eax,2 ; 左移2位
mov d
word ptr [a],eax
另外shr命令实现右移功能,相当于除以2的幂,有符号数右移采用sar
TAG: 汇编指令 逻辑左移