汇编移位指令复习「建议收藏」

汇编移位指令复习「建议收藏」前言吐槽一下下,汇编的指令真的好多呀,学了这么多可是记住的却没几个,所以写下这篇文章加深对汇编移位指令的理解和记忆文章目录前言1、逻辑移位指令逻辑左移SHL逻辑右移SHR2、算术移位指令算数左移SAL算术右移SAR3、循环移位指令循环左移ROL循环右移ROR4、注意点1、逻辑移位指令逻辑移位指令适用于带符号数运算逻辑左移SHL指令格式:SHLOPR,CNT????PR:…

大家好,又见面了,我是你们的朋友全栈君。

前言

吐槽一下下,汇编指令真的好多呀,学了这么多可是记住的却没几个,所以写下这篇文章加深对汇编移位指令的理解和记忆

1、逻辑移位指令

逻辑移位指令适用于带符号数运算

逻辑左移 SHL

指令格式:SHL OPR,CNT

?PR:是指被移位的操作数 ​ ? CNT:是指移位次数

汇编移位指令复习「建议收藏」

比如将二进制数 1100 1111 左移 1 位,该数就变为 1001 1110,cf=1:

汇编移位指令复习「建议收藏」

代码

MOV AL,0CFh
SHL AL,1

逻辑右移 SHR

指令格式:SHR OPR,CNT

汇编移位指令复习「建议收藏」

下图所示为二进制数 1100 1111 逻辑右移一位,得到 01100111,最低位移入进位标志位,cf=1:

汇编移位指令复习「建议收藏」

代码

MOV AL,0CFH
SHR AL,1

2、算术移位指令

算术移位指令适用于无符号数运算

算数左移 SAL

指令格式:SAL OPR,CNT

? 算数左移和逻辑左移完全一样哒,这里就不多说了

算术右移 SAR

指令格式:SAR OPR,CNT

汇编移位指令复习「建议收藏」

例如,二进制数 1100 1111,符号位为 1。算术右移一位后,得到 1110 0111:

汇编移位指令复习「建议收藏」

代码

MOV AL,0CFH
SAR AL,1

3、循环移位指令

循环左移 ROL

指令格式:ROL OPR,CNT

汇编移位指令复习「建议收藏」

比如将二进制数 1100 1111 循环左移 4 位,该数就变为1111 1100,cf=0:

代码

MOV CL,4
MOV AL,0CFH    ;AL = 11001111b
ROL AL,4       ;左移1位:10011111b, cf=1
               ;左移2: 00111111b, cf=1
               ;左移3位:01111110b, cf=0
               ;左移4位:11111100b, cf=0

循环右移 ROR

指令格式:ROR OPR,CNT

汇编移位指令复习「建议收藏」

比如将二进制数 1100 1111 循环右移 4 位,该数就变为 11111100,cf=1:

代码

MOV CL,4
MOV AL,0CFH    ;AL = 11001111b
ROR AL,4       ;右移1位:11100111b, cf=1
               ;右移2: 11110011b, cf=1
               ;右移3位:11111001b, cf=1
               ;右移4位:11111100b, cf=1

4、注意点

移位次数由CNT决定,它的取值为1或者CL

(1)CNT=1时,只移动一位

MOV BL,8Fh      ; BL = 10001111b
SHL BL,1        ;移位后 BL = 00011110b

(2)CNT > 1时,则在使用移位指令前,应首先将移位次数送给CL寄存器

MOV BL,8Fh      ; BL = 10001111b
MOV CL,2
SHL BL,CL       ;移位后 BL = 00111100b
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141724.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • poj 3237 Tree(树链拆分)

    poj 3237 Tree(树链拆分)

    2022年1月3日
    46
  • Unix常用命令

    Unix常用命令moreless:less的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less允许使用者往回卷动以浏览已经看过的部份,同时因为less并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如vi)来的快速。unix种类[图]>>Linux‖BSD‖Solaris‖SCO‖HP-UX‖AIX‖AS4

    2022年5月31日
    41
  • mysql 错误10038_如何解决MySql10038错误

    第一种方法:第一步:先看报错窗口2003can’tconnecttoMySQLserveron’127.0.0.1′(10038).第二步:原因是:远程3306端口未对外开放操作。第三步:首先远程连接服务器,点击”开始”–>”管理工具”–>”高级安全Windows防火墙”。第四步:在打开的窗口中,左边选中”入站规则”,右边点击”新建规则”来建立一个入站规则。第五步:…

    2022年4月18日
    62
  • ubuntu java 卸载_ubuntu 怎么卸载java「建议收藏」

    ubuntu java 卸载_ubuntu 怎么卸载java「建议收藏」很简单。许多人比较厌恶Java,但是很有可能因为某些原因你需要安装Java,尽管你很讨厌它。在这篇文章中,我们将展示如何在Ubuntu14.04安装Java(也可能在LinuxMint17同样适用)。JREvsOpenJDKvsOracleJDK在我们继续了解如何安装Java之前,让我们快速地了解JRE、OpenJDK和OracleJDK之间的不同之处。JRE(JavaRunt…

    2022年5月12日
    53
  • python学得好、进监狱进的快_最经典的100部美剧,看到第一名瞬间服气!

    python学得好、进监狱进的快_最经典的100部美剧,看到第一名瞬间服气!(1999-Present)NBC80、摩登原始人TheFlintstones(1960-1966)ABC79、芝麻街SesameStreet(1969-Present)PBS78、奉子成婚MarriedwithChildren(1987-1997)Fox77、丑闻Scandal(2012-Present)ABC76、欢乐满屋FullHouse(1987-1995)…

    2022年9月30日
    3
  • Dubbo负载均衡策略及自行扩展负载均衡策略

    Dubbo负载均衡策略及自行扩展负载均衡策略负载均衡在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用。可以自行扩展负载均衡策略,参见:负载均衡扩展负载均衡策略RandomLoadBalance随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。RoundRobinLoadBalance轮循,按公约后的权重设置轮循比率。存在…

    2022年7月11日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号