专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

汇编语言SAL(算术左移)和SAR(算术右移)指令:将操作数左/右移一位

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/17 15:36:48       共计:3657 浏览
SAL(算术左移)指令的操作与《SHL指令》一节中的 SHL 指令一样。每次移动时,SAL 都将目的操作数中的每一位移动到下一个最高位上。最低位用 0 填充;最高位移入进位标志位,该标志位原来的值被丢弃:


如,二进制数 1100 1111 算术左移一位,得到 1001 1110:


SAR(算术右移)指令将目的操作数进行算术右移:


SAL 与 SAR 指令的操作数类型与 SHL 和 SHR 指令完全相同。移位可以重复执行,其次数由第二个操作数给出的计数器决定:

SAR destination, count

下面的例子展示了 SAR 是如何复制符号位的。执行指令前 AL 的符号位为负,执行指令后该位移动到右边的位上:

mov al, 0F0h ; AL = 11110000b (-16)
sar al, 1     ; AL = 11111000b (-8) , CF = 0

有符号数除法

使用 SAR 指令,就可以将有符号操作数除以 2 的幂。下例执行的是 -128 除以2³,商为 -16:

mov dl, -128 ; DL = 10000000b
sar dl, 3     ; DL = 11110000b

AX 符号扩展到 EAX

设 AX 中为有符号数,现将其符号位扩展到 EAX。首先把 EAX 左移 16 位,再将其算术右移 16 位:

mov ax, -128 ; EAX = ????FF80h
shl eax, 16     ; EAX = FF800000h
sar eax, 16     ; EAX = FFFFFF80h

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:汇编语言ROL(循环左移)指令:将操作数所有位都向左移 | ·下一条:汇编语言SHR(右移)指令:将操作数逻辑右移一位

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有