汇编语言——移位指令[通俗易懂]

基本概念移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。基本格式格式为…

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

基本概念

移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。

基本格式 

格式为:xxx oper1,CL/1

移位次数只能是1或者存放在CL里面。

移位指令

一、算术移位指令

1、算术左移指令SAL

功能:左移一次,最低位补0,最高位送入CF标志位,如图:

汇编语言——移位指令[通俗易懂]

意义:左移n次,等于x2的n次幂。所以可用于有符号操作数做x2的n次幂运算。

2、算术右移指令SAR

功能:右移一次,最高位保持不变,最低位送入CF标志位,如图:

汇编语言——移位指令[通俗易懂]

意义:右移n次,等于/2的n次幂。所以可用于有符号操作数做/2的n次幂运算。

二、逻辑移位指令

1、逻辑左移指令SHL

功能:同SAL,如图:

汇编语言——移位指令[通俗易懂]

意义:同SAL

2、逻辑右移指令SHR

功能:右移一次,最高位补0.区别!最低位送入CF标志位。如图:

汇编语言——移位指令[通俗易懂]

意义:用于实现无符号数/2的n次幂操作。

三、循环移位指令

1、循环左移指令ROL

功能:左移一次,左移前的最高位送入最低位以及CF.如图:

汇编语言——移位指令[通俗易懂]

2、循环右移指令ROR

功能:右移一次,右移前的最低位送入最高位以及CF.如图:

汇编语言——移位指令[通俗易懂]

3、带进位的循环左移指令RCL

功能:左移一次,左移前的最高位送入CF,CF的内容送入最低位.如图:

汇编语言——移位指令[通俗易懂]

4、带进位的循环右移指令RCR

功能:右移一次,右移前的最低位送入CF,CF的内容送入最高位.如图:

汇编语言——移位指令[通俗易懂]

四、双精度移位指令

1、双精度左移指令SHLD

 

2、双精度右移指令SHRD

 

参考文章

https://blog.csdn.net/qq_41627235/article/details/80368254

https://baike.baidu.com/item/%E7%A7%BB%E4%BD%8D%E6%8C%87%E4%BB%A4/10562725?fr=aladdin

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

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

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


相关推荐

  • SBC介绍_sbc平台

    SBC介绍_sbc平台SBC介绍sessionbordercontroller会话边界控制器KA–>转址FS–>穿透会话边界控制器SessionBorderController,即会话边界控制器SBC已经逐渐成为NGN和IMS网络的标准配置产品(如同Lanswitch和路由器)。也被广泛称为BAC(边界接入控制器),定位在IMS网络的ABG(accessbordergateway),解决NG

    2025年10月28日
    2
  • TP5 where数组查询(模糊查询)(有多个查询条件) when「建议收藏」

    TP5 where数组查询(模糊查询)(有多个查询条件) when「建议收藏」有查询条件就查询,多个查询条件,只要有查询,就增加一个查询条件一、TP5.1版本模糊查询$where[]=[‘title’,’like’,”%”.$sotitle.”%”];$map[]=[‘name’,’like’,’think’];$map[]=[‘status’,’=’,1];//时间查询$wheret2[]=[‘time’,’between’,[…

    2022年5月30日
    55
  • python的第三方库是用什么实现的_python 第三方库

    python的第三方库是用什么实现的_python 第三方库编写自己的第三方库当你看见你编程时所用到的所有Python第三方库时,有没有想过,他们是怎么被允许使用的呢?这篇教程,帮你制作一个属于自己的第三方库!1.你需要的工具pycharmsetuptools库twine库2.详细步骤首先,打开pycharm,新建一个项目然后选择编译器Virtualenv,新建一个虚拟环境等待虚拟环境创建完成,如果默认存在main.py,就删除它然后,新建一个pythonpackage文件夹,取名为你要上传的库的名字创建后,文件夹中默认有__init__

    2022年8月31日
    4
  • C语言 list 链表

    C语言 list 链表目录一、list简介二、list包含方法2.1.push_front2.2.push_back2.3.begin2.3.end2.2.pop_front2.2.pop_back2.2.size2.2.empty2.2.clear三、源码list.clist.h一、list简介这里用双向链表实现,包含插入头、插入尾、删除头、删除尾等操作。二、list包含方法2.1.push_front功能插入数据到list头部参数list:list指针,data:插入数据指

    2022年7月12日
    20
  • Optimal Keypad[通俗易懂]

    Optimal Keypad[通俗易懂]Description OptimusMobilesproducesmobilephonesthatsupportSMSmessages.TheMobileshaveakeypadof12keys,numbered1to12.Thereisacharacterstringassignedtoeachkey.Totypeinthe

    2022年4月28日
    35
  • docker新建镜像_docker基础镜像和项目镜像

    docker新建镜像_docker基础镜像和项目镜像Docker创建镜像、修改、上传镜像–创建镜像有很多方法,用户可以从DockerHub获取已有镜像并更新,也可以利用本地文件系统创建一个。一、创建镜像创建镜像有很多方法,用户可以从Do

    2022年8月2日
    13

发表回复

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

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