逻辑右移和算术右移有什么不同点和用法区别

如题所述

1、相同点:汇编语言中SAR和SHR指令都是右移指令,SAR是算数右移指令(shift arithmetic right),而SHR是逻辑右移指令(shift logical right)。

2、两者的在于SAR右移时保留操作数的符号,即用符号位来补足,而SHR右移时总是用0来补足。

例如10000000算数右移一位是11000000,而逻辑右移一位是01000000。

3、用法不同:

SAR功能是将操作数右移,符号位保持不变,可用于有符号数除法;
SHR功能是将操作数右移,原最低位移入进位标志CF,原最高位补0;可用于无符号数除法.

例如,AL=1110 1110,BL=0110 1100,CL=2

SHR AL,CL后

AL=0011 1011 SHR最高位用0填补

SAR AL,CL

AL=1111 1011 SAR最高位不变

SAR BL,CL

BL=0011 1011 SAR最高位不变

扩展资料:

逻辑右移SHR

SHR指令影响标志位CF和OF。如果移位次数为1,且移位后符号位的值发生变化,则OF=1,否则OF=0.如果移位次数不为1,则OF不确定。

【格式】:SHR OPR.CNT。其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位。

如:MOV AX,62H

SHR AX,1

当移位数大于1时,需要先将移位数放进CL中然后再进行移位操作。可以使用8位立即数指定范围从1到31的移位次数。

如MOV AL,62H

MOV CL,4

SHR AL,CL

所执行简易理解如下:

01100010B因为是右移操作,也称为右移补0操作,将二进制位逐次在右边去掉一位然后在左边添个0,移多少位重复上述操作多少次。4次移位后结果为00000110B,即06H.

【应用】逻辑右移一位的操作,相当于将寄存器或存储器的无符号数除以2,因此同样可以用SHR指令完成除以某些常数的运算。而且移位指令通常比除法指令时运行速度要快得多。

参考资料:

百度百科——SAR(SAR算法)

百度百科——SHR(计算机术语)

温馨提示:答案为网友推荐,仅供参考
相似回答