ITEEDU

5、带进位的循环移位指令

带进位的循环移位指令有:带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。

指令的格式:

RCL/RCR Reg/Mem,  CL/Imm

受影响的标志位:CF和OF

带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。具体功能如下图(a)、(b)所示。

(a)、RC

(b)、RCR

下面是几个带进位循环移位的例子及其执行结果。

双精度移动指令 指令操作数的初值 指令执行后的结果
RCL  AX, 1 CF=0,(AX)=0ABCDH (AX)=579AH
RCL  AX, 1 CF=1,(AX)=0ABCDH (AX)=579BH
RCR  AX, 2 CF=0,(AX)=0ABCDH (AX)=AAF3H
RCR  AX, 2 CF=1,(AX)=0ABCDH (AX)=EAF3H

例5.12 编写指令序列把由DX和AX组成的32位二进制算术左移、循环左移1位。

解:

(DX,AX)算术左移1位指令序列

SHL  AX, 1

RCL  DX, 1

(DX,AX)循环左移1位指令序列

SHLD  DX, AX, 1

RCL   AX, 1