
1. 位移指令包括:SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)。
2. 循环移位指令包括:ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位循环右移)。
3. 位移指令的用法:
- SHR:每位右移,低位进位(CF),高位补0。
- SAR:每位右移,低位进位(CF),高位保持不变。
4. 循环移位指令的用法:
- ROL:循环左移,进位值移动到低位,高位进位(CF)。
- ROR:循环右移,进位值移动到高位,低位进位(CF)。
- RCL:带进位循环左移,进位值移动到低位,高位进位(CF)。
- RCR:带进位循环右移,进位值移动到高位,低位进位(CF)。
5. 双精度移位指令:
- SHLD:双精度左移,取两个字作移位操作,结果为一个字。
- SHRD:双精度右移,取两个双字作移位操作,结果为一个双字。
6. SHLD和SHRD指令的使用格式:
- SHLD, DST, REG, CNT:将REG中的CNT指定的数值左移,结果存储在DST中。
7. 在执行SHLD和SHRD指令时,源操作数的寄存器提供移位值以补充目的操作数因移位而产生的空缺。指令执行后,只取目的操作数作为移位的结果,源操作数寄存器保持不变。