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

汇编移位指令复习「建议收藏」前言吐槽一下下,汇编的指令真的好多呀,学了这么多可是记住的却没几个,所以写下这篇文章加深对汇编移位指令的理解和记忆文章目录前言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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • tkMapper的使用-超详细

    tkMapper的使用-超详细tkMapper已经完成了对单表的通用操作的封装,主要封装在Mapper接口和MysqlMapper接口中,因此我们如果要完成对单表的操作,只需要自定义dao接口继承这两个接口即可。增加方法在准备工作中已经完成,如果想了解此部分内容,可以向上进行查看,此处主要是添加功能的另一种实现————主键回填。注意在进行主键回填的时候,实体类中id必须要用@Id指定一下,要不然映射的时候找不到id;过程如下创建一个users对象,对象的id是需要修改的用户的id,其他信息是需要更改后的信息。…

  • databus mysql搭建_【databus】初识Databus

    databus mysql搭建_【databus】初识Databus1.简介Databus是一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。由LinkedIn于2013年开源。Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更并进行其他业务逻辑。Databus有以下特点:数据源和消费者之间的隔离。数据传输能保证顺序性和至少一次交付的高可用性。从变化流的任意时间点进行消费,包括…

    2022年10月16日
  • Idea激活码永久有效Idea2021.3.3激活码教程-持续更新,一步到位[通俗易懂]

    Idea激活码永久有效Idea2021.3.3激活码教程-持续更新,一步到位[通俗易懂]Idea激活码永久有效2021.3.3激活码教程-Windows版永久激活-持续更新,Idea激活码2021.3.3成功激活

  • 什么是网站死链?如何查询网站死链?网站死链怎么解决?[通俗易懂]

    什么是网站死链?如何查询网站死链?网站死链怎么解决?[通俗易懂]网页死链:简单地讲,死链接指原来正常,后来失效的链接。死链接发送请求时,服务器返回404错误页面。死链出现原因1、动态链接在数据库不再支持的条件下,变成死链接。2、某个文件或网页移动了位置,导致指向它的链接变成死链接。3、网页内容更新并换成其他的链接,原来的链接变成死链接。4、网站服务器设置错误5、网站还没有完全做好,就上传到服务器上去了,这样也很多死链的。6、某文件夹名称修改,路

  • MySQL导入SQL文件及常用命令

    MySQL导入SQL文件及常用命令

    2021年10月17日
  • 树莓派4b支持5gwifi吗_树莓派4和4b的区别

    树莓派4b支持5gwifi吗_树莓派4和4b的区别树莓派4b与Manjaro,安装、配置、修复WiFi频段5G和CountryCode安装Manjaro到树莓派4b下载Manjaro烧录系统到SD卡并启动修复无线网络5G频段更新软件仓库安装缺失的功能安装Manjaro到树莓派4bManjaroLinux(或简称Manjaro)是基于ArchLinux的Linux发行版,使用Xfce、GNOME和KDEPlasma作为默认桌面环境,和Arch一样,采用滚动更新。其目标是为PC提供易于使用的自由的操作系统。Manjaro

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

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