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

shl


shl R

指令格式

shl R

影响标志

伪代码描述

1
R = (R << 1) & 0xff;

指令描述

寄存器R内容左移1位,结果存储到寄存器R中。

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

范例

1
2
3
4
//0x89 << 1
mov A, #0x89    //A = 0x89
mov 0xA0, A     //[0xA0] = 0x89
shl 0xA0        //[0xA0] = 0x12

shl A, R

指令格式

shl A, R

影响标志

伪代码描述

1
A = (R << 1) & 0xff;

指令描述

寄存器R内容左移1位,结果存储到累加器A中。

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

范例

1
2
3
4
//0x23 << 1
mov A, #0x23    //A = 0x23
mov 0x92, A     //[0x92] = 0x23
shl A, 0x92     //A = 0x46