逻辑左移一位相当于无符号数乘以2
逻辑右移一位相当于无符号数除以2
1)算术移位 当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0。
2)逻辑移位 逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补"0"。 逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。
算术移位和逻辑移位的区别:
逻辑左移和算术左移无区别 统一功能的两种写法(相当于无符号数乘2)右移 有区别 算术右移 最高位无变化 (相当于 有符号数除2)逻辑右移最高位 不管是什么都用0填充 (相当于 无符号数除2)
所谓循环右移是将一个数位的最后一位移到第一位
它的功能:比如你想让一组小灯逐个亮,那么你可将(比如数1000000)右移并输出,那样它就逐个亮了
带进位循环,就是在向左或右循环时带上C一块循环,因为一些指令的操作回影响标志位(如C),那样的话带上C一块循环就能实现一些特殊一点的功能了,具体的就是要看你要做什么了。
移位指令对标志寄存器中条件码的影响:
OF:当移动次数为1时有效。在移位后最高有效位发生变换,OF位置为1,否则为0。
CF:根据指令的执行结果
PF、SF、ZF根据执行结果设定。
AF:没有具体定义。
注意:如果移位位数大于1,必须用CL寄存器给出移位位数。
5)循环左移指令
rol opr
6) 带进位循环左移指令
rcl opr,count
7) 循环右移指令
ror opr
8)带进位的循环右移指令
rcr opr,count