ROL,ROR,SAR,SHR,SAL,SHL区别

来源:互联网 发布:linux下c编程入门 编辑:程序博客网 时间:2024/04/26 05:30

SHL,SAL分别是逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零;SHR是逻辑右移,数据往右移动,在左边补零。如:1000 0000->0010 0000(逻辑右移两位)SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111.
      循环左移指令:ROL DEST,COUNT

  指令功能:把目的地址中的数据循环左移COUNT次,每次从最高位(最左)移出的数据位都补充到最低位(最右),最后从最高位(最左)移出的数据位保存到CF标志位。

  标志位影响:CF标志用于保存最后从最高位移出的数据位。如果COUNT=1,OF标志有意义,如果移位前后数据的符号位发生了变化,OF=1;如果符号位没有发生变化,OF=0。如果COUNT>1,OF标志不确定(没有意义)。

循环左移指令:ROL DEST,COUNT.

指令功能:把目的地址中的数据循环右移COUNT次,每次从最低位(最右)移出的数据位都补充到最高位(最左),最后从最低位(最右)移出的数据位保存到CF标志位。

  标志位影响:CF标志用于保存最后从最低位移出的数据位。如果COUNT=1,OF标志有意义,如果移位前后数据的符号位发生了变化,OF=1;如果符号位没有发生变化,OF=0。如果COUNT>1,OF标志不确定(没有意义)。