循环左移与带进位循环左移有什么区别


看不出有什么不同啊?

一、方式不同

1、循环左移:累加器自裂键身循环向左移位。

2、带进位循环左移:累加器连同进位位一起左移。

二、过程不同

1、循环左移:移出的位不仅要进入CF,而且还要填补空出的位。

2、带进位循环左移:用原CF的值填补空出的位,移出的位再进入CF。


三、功能不同

1、循环左移:把操作数d,的各个二进制位歼带向左移动d位,从d左端移出的每一位再依次移到右端空出的位上,最后移出的位还要送到CF中。

2、带进位循环左移:把操作数d的各位与CF联合在一起,构成9个或者17个二进制位,向左移动d位,从左端移出的各位再依次移到右端空出的位上。

参考资料来源:百度百科-算数左移位

参考氏源芦资料来源:百度百科-循环移位


循环左移ROL(Rotate Left):移出的位不携和仅要进入CF,而且还要填补辩毁盯空出的位。

带进位的循环左移RCL(Rotate Left Through Carry):用原CF的值填补空出的位,移出的位再进入CF。

假设当前,AL=01010011B,CF=1,则

执行指令 ROL AL,1
后,AL=10100110B,CF=0

执行指令 RCL AL,1
后,AL=10100111B,CF=0
最后一位的1,是先前余亩CF的1
循环左移是指寄存器内的东西移动,如AH循环左移,那么链芦移动的兄唤笑位数总共是8位。

带进位循环左移是指CY寄存器的东西也参与到移动中来。
举例:(为说明问题,用1-9的数字来说,其羡含实都是0和1)
假定AH=12345678,cy=9
循环左移后AH:23456781
带进位循环左移AH:23456789
比迟宏如进位位CF是0,寄存器AL中游旦旅是1001
循环左移
ROL AL
之后,AL中是0011,
带进位的循环神凳左移
RCL AL
之后
AL是0010,CF中是1
比如101
一个变成010,一个变成011。