当前文档版本为 v0.5.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

rorc


rorc R

指令格式

rorc R

影响标志

C Z

伪代码描述

1
2
3
4
TEMP = R;
R = ((R >> 1) & 0xff) | (C << 7);
C = TEMP & 1;
Z = A == 0 ? 1 : 0;

指令描述

寄存器R内容带C标志循环右移1位,结果存储到寄存器R中。

指令执行前:
      R.7  R.6  R.5  R.4  R.3  R.2  R.1  R.0         C
     +----+----+----+----+----+----+----+----+    +----+
+--->| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |--->|  c |---+
|    +----+----+----+----+----+----+----+----+    +----+   |
|                                                          |
+----------------------------------------------------------+
指令执行后:
      R.7  R.6  R.5  R.4  R.3  R.2  R.1  R.0         C
     +----+----+----+----+----+----+----+----+    +----+
     |  c | b7 | b6 | b5 | b4 | b3 | b2 | b1 |    | b0 |
     +----+----+----+----+----+----+----+----+    +----+

范例

1
2
3
4
5
//0x3C >> 1
//C = 0, AC = 0, Z = 0, OV = 0
mov     A, #0x3C    //A = 0x3C
mov     0xDD, A     //[0xDD] = 0x3C
rorc    0xDD        //[0xDD] = 0x1E, C = 0, AC = 0, Z = 0, OV = 0

rorc A, R

指令格式

rorc A, R

影响标志

C Z

伪代码描述

1
2
3
A = ((R >> 1) & 0xff) | (C << 7);
C = R & 1;
Z = A == 0 ? 1 : 0;

指令描述

寄存器R内容带C标志循环右移1位,结果存储到累加器A中。

指令执行前:
      R.7  R.6  R.5  R.4  R.3  R.2  R.1  R.0         C
     +----+----+----+----+----+----+----+----+    +----+
+--->| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |--->|  c |---+
|    +----+----+----+----+----+----+----+----+    +----+   |
|                                                          |
+----------------------------------------------------------+
指令执行后:
      A.7  A.6  A.5  A.4  A.3  A.2  A.1  A.0         C
     +----+----+----+----+----+----+----+----+    +----+
     |  c | b7 | b6 | b5 | b4 | b3 | b2 | b1 |    | b0 |
     +----+----+----+----+----+----+----+----+    +----+

范例

1
2
3
4
5
//0x2B >> 1
//C = 0, AC = 0, Z = 0, OV = 0
mov     A, #0x2B    //A = 0x2B
mov     0xD6, A     //[0xD6] = 0x2B
rorc    A, 0xD6     //A = 0x15, C = 1, AC = 0, Z = 0, OV = 0