可以将这几个指令分为移位指令和循环移位指令,其中位移指令为:SHL、SAL、SHR、SAR,循环位移指令为:ROL、RCL、RCR、RCL,他们的具体用法如下:
一、位移指令
具体含义:SHL: 逻辑左移;SAL: 算术左移;SHR: 逻辑右移;SAR: 算术右移
具体用法:SHR:每位右移, 低位进 CF, 高位补 0;SAR:每位右移, 低位进 CF, 高位不变,它们的结果影响 OF、SF、ZF、PF、
二、循环移位指令
具体含义:ROL:循环左移;ROR:循环右移;RCL: 带进位循环左移;RCR: 带进位循环右移。
具体用法:ROL: 循环左移, 高位到低位并送 CF;ROR: 循环右移, 低位到高位并送 CF;RCL: 循环左移, 进位值到低位, 高位进 CF;RCR: 循环右移, 进位值到高位, 低位进 CF。
扩展资料:
双精度移位指令:386及其后继机型可使用本组指令,SHLD双精度左移和SHRD双精度右移,格式:SHLD,DST,REG,CNT。
这组指令可以取两个字作移位操作而得到一个字的结果,也可以取两个双字作移位操作而得到一个双字的结果。
在移位中,作为源操作数的寄存器提供移位值,以补目的操作数因移位引起的空缺,而指令执行完成后,只取目的操作数作为移位的结果,源操作数寄存器则保持指令执行前的值不变。
记住它的英文全称就能够很好的知道其使用功能
逻辑指令都是按位进行的,就是需要把数写成二进制数,然后一位对应一位的逻辑运算
还有就是逻辑移位都是把移出位放在CF中然后补0,算术移位则是右移时高位不变,左移时跟逻辑移位一样。
SHL SHift logic Left;逻辑左移
SHR SHift logic Right;逻辑右移
SAL Shift Arithmetic Left 算术左移
SAR Shift Arithmetic Right 算术右移
ROL ROtate shift Left 循环左移
ROR ROtate shift Right 循环右移
RCL Rotate with Carry shift Left 带进位循环左移
RCR Rotate with Carry shift Right 带进位循环右移
SHL SHR 逻辑左/右移 实际上是把操作数看做无符号数进行移位
SAL SAR 算数左/右移 实际上是把操作数看做有符号数进行移位
ROL ROR 不带CF进位的循环移位
RCR RCL 带CF进位的循环移位