移位和循环移位指令
移位和循环移位指令如下表:
SHL | 左移 |
---|---|
SHR | 右移 |
SAL | 算术左移 |
SAR | 算术右移 |
ROL | 循环左移 |
ROR | 循环右移 |
RCL | 带进位的循环左移 |
RCR | 带进位的循环右移 |
SHLD | 双精度左移 |
SHRD | 双精度右移 |
移位操作数的位有两种方法,一种是逻辑移位,另一种是算术移位。
逻辑移位:空出来的位用0填充
算术移位:空出来的位用原数据的符号来填充
SHL指令:
SHL destination,count
位元乘法:数值进行左移即执行了位元乘法。任何操作数左移n位,即将该数乘以2的n次方。
SHR指令:
位元除法:数值进行右移即执行了位元除法。任何操作数右移n位,即将该数除以2的n次方。
SAL和SAR指令:SAL的指令和SHL一样,不同的是SAR指令,算术右移最高位要保留。
AX符号扩展到EAX:设AX中有符号数,现将其符号位扩展到EAX。首先把EAX左移16位,再将其算术右移16位。
如下: