汇编语言中SAR和SHR指令的区别

 我来答
爱教育爱学习
高粉答主

2019-10-30 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112741

向TA提问 私信TA
展开全部

1、方向不同

通过gdb动态调试得到每次循环的值进行比对,才发现出现错误的具体原因。sar在符号位为1时,右移时填充1,符号位为0时填充0。而python默认的右移运算为逻辑右移运算,右移时默认填充0,与符号位无关。

2、作用不同

汇编语言中SAR和SHR指令都是右移指令,SAR是算数右移指令(shift arithmetic right),而SHR是逻辑右移指令(shift logical right)。SAR右移时保留操作数的符号,即用符号位来补足,而SHR右移时总是用0来补足。例如10000000算数右移一位是11000000,而逻辑右移一位是01000000。

3、顺序不同

SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111。SAR右移的时候,最高位不变,最低位移入CF。

参考资料来源:百度百科—汇编语言

问明6E
高粉答主

2019-05-20 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13.1万
展开全部

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(计算机术语)

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可轩163
2017-04-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:4824
采纳率:88%
帮助的人:1799万
展开全部
SAR是算术右移指令,功能是将操作数右移,符号位保持不变,可用于有符号数除法;
例如,SAR AL,1 ;; 作用是将DX中的数右移1位,相当于除以2;
------------------------------
SHR是逻辑右移指令,功能是将操作数右移,原最低位移入进位标志CF,原最高位补0;
可用于无符号数除法.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式