RCR和ROR有什么区别?

时间:2012-05-01 07:58:54

标签: x86-16 assembly

我理解RCR将从右向左旋转位的条件,从进位中取出位,而ROR将从右旋转位从左边开始,从右边拿,但这是他们之间的唯一区别吗?如果是这样,两条指令似乎都做了同样的工作。请帮忙。谢谢

2 个答案:

答案 0 :(得分:29)

RCR在旋转中包含进位标志,因此它实际上是N + 1位旋转,而ROR不包括进位标志,所以它只是N位旋转。

来自www.c-jump.com的一些不错的图表:

enter image description here

enter image description here

答案 1 :(得分:7)

两条指令都从左向右旋转位(左侧位是MSB)。

RCR将进位标志旋转到MSB,将LSB旋转到进位标志。

ROR将LSB旋转到MSB而不通过进位标志。

+--> CF -->  MSB --> ... -> LSB --+
|                                 |      RCR
+---------------------------------+


+-> CF      +-> MSB --> ... -> LSB --+
|           |                        |      ROR
+------------------------------------+