ROL指令:循环左移指令。
把目的地址中的数据循环左移n次,每左移一次,把最高位同时移入CF和操作数最低位。
相当于两步,每个循环开始时把最高位放入CF和最低位,然后每个数向左移动一个位置,这是一个循环


一般格式:如果循环移动的次数大于1,就必须把这个数存到CL里


   ROL 目标操作数,1 ; 循环向左移1位
    ROL 目标操作数,CL    ; 循环向左移动N位



ROL指令循环左移,如下面的表格所示(移动之前)


CF1514131211109876543210


移动之后:


151413121110987654321015






ROR指令:循环右移指令。


把目的地址中的数据循环右移n次,每右移一次,把最低位同时移入CF和操作数最高位。


一般格式:


   ROR 目标操作数,1 ; 循环向右移1位
    ROR 目标操作数,CL    ; 循环向右移动N位


如果循环移动的次数大于1,就必须把这个数存到CL里


ROR指令循环右移,如下面的表格所示(移动之前)


CF1514131211109876543210


移动之后:


00151413121110987654321










RCL指令:带进位的循环左移。


连同进位标志CF左循环移动,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位。


一般格式:如果循环移动的次数大于1,就必须把这个数存到CL里


   RCL 目标操作数,1 ; 循环向左移1位
    RCL 目标操作数,CL    ; 循环向左移动N位



RCL指令循环左移,如下面的表格所示(移动之前):


CF1514131211109876543210


移动之后:


1514131211109876543210CF






RCR指令:带进位的循环右移。


连同进位标志CF右循环移动,每右移一次,把操作数的最低位移入CF,而CF中原有内容移入操作数的最高位。


一般格式:如果循环移动的次数大于1,就必须把这个数存到CL里


   RCR 目标操作数,1 ; 循环向右移1位
    RCR 目标操作数,CL    ; 循环向右移动N位


RCR指令循环右移,如下面的表格所示(移动之前):


CF1514131211109876543210


移动之后:


0CF151413121110987654321










例:编写代码,该代码使用循环移动命令而不是XCHG命令交换AX和BX寄存器的内容。


   MOV CX,16
    RCR AX,1
  @TOP: RCR BX,1
    RCR AX,1
    LOOP    @TOP






最后修改:2022 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏