微型计算机原理与接口技术——8086指令系统之移位指令

微型计算机原理与接口技术——8086指令系统之移位指令移位指令移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。要求操作数不能是立即数;这类指令的执行大多会影响6个状态标志位。非循环移位指令逻辑左移SHL(ShiftLogicLeft)算术左移SAL(ShiftArithmeticLeft)逻辑右移SHR(ShiftLogicRight)算术右移SAR(ShiftArithmeticRight)4条指令的格式完全相同,可实现对8位或16位寄存器操作数或内存操作数进行指定次数的移位。逻辑移位指令针对的

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

移位指令

  • 移动一位时由指令直接给出;
  • 移动两位及以上,则移位次数由CL指定。
  • 要求操作数不能是立即数;
  • 这类指令的执行大多会影响6个状态标志位。

非循环移位指令

  • 逻辑左移SHL(Shift Logic Left)
  • 算术左移SAL(Shift Arithmetic Left)
  • 逻辑右移SHR(Shift Logic Right)
  • 算术右移SAR(Shift Arithmetic Right )

4条指令的格式完全相同,可实现对8位或16位寄存器操作数或内存操作数进行指定次数的移位。

逻辑移位指令针对的是无符号数,算术移位指令针对有符号数。

算术左移和逻辑左移

  • 算术左移指令:
    SAL OPRD,1
    SAL OPRD,CL

  • 逻辑左移指令:
    SHL OPRD,1
    SHL OPRD,CL

在这里插入图片描述

逻辑右移

在这里插入图片描述
移动一位后,若最高位与次高位相同,则OF=0;否则OF=1。

SHR指令实现无符号数右移一位÷2。

例:
在这里插入图片描述

算术右移

在这里插入图片描述
SAR指令实现带符号数右移一位÷2

循环移位指令

在这里插入图片描述
在这里插入图片描述

指令格式、对操作数的要求与非循环移位指令相同

不带CF的循环左移指令ROL

格式

ROL OPRD,1
ROL OPRD,CL

操作

ROL指令将目标操作数向左循环移动一位或由CL指定的位数,最高位移入CF,同时再移入最低位构成循环,进位标志不在循环之内。

对标志位的影响同SAL/ SHL指令

例:
在这里插入图片描述

不带CF的循环右移指令ROR

格式

ROR OPRD,1
ROR OPRD,CL

操作

ROR指令将目标操作数向右循环移动一位或CL指定的位数,最低位移入CF,同时再移入最高位构成循环,进位标志不在循环之内。

对标志位的影响同SHR指令

带CF的循环左移指令RCL

格式

RCL OPRD,1
RCL OPRD,CL

操作

RCL指令将目标操作数连同进位标志位CF一起向左循环移动一位或CL指定的位数,最高位移入CF,而CF原来的值移入最低位。

对标志位的影响同ROL指令

带CF的循环右移指令RCR

格式

RCR OPRD,1
RCR OPRD,CL

操作

RCR指令将目标操作数连同进位标志位CF一起向右循环移动一位或CL指定的位数,最低位移入CF,而CF原来的值移入最高位。

对标志位的影响同ROR指令

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

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

(0)
上一篇 2022年5月11日 下午7:40
下一篇 2022年5月11日 下午7:40


相关推荐

  • 如何屏蔽SIGPIPE信号

    如何屏蔽SIGPIPE信号#include<stdlib.h>#include<sys/signal.h>//默认读写一个关闭的socket会触发sigpipe信号该信号的默认操作是关闭进程这明显是我们不想要的//所以我们需要重新设置sigpipe的信号回调操作函数比如忽略操作等使得我们可以防止调用它的默认操作//信号的处理是异步操作也就是说在这一条语句以后继续往下执行中如果碰到信号依旧会调用信号的回调处理函数//处理sigpipe信号voidhandle_for_s

    2022年5月30日
    36
  • pycharm安装配置pyqt5

    pycharm安装配置pyqt5pycharm 版本 2021 1 3python3 9 安装安装 pyqt5 pyqt5 toolspip 安装 tips win R 打开 cmd 可以使用 pipversion 查看当前选择的 pip 安装目录 确认为该目录后在 cmd 使用 pip 安装如下安装 pyqt5 pipinstallPy 下载速度贼慢 pipinstallPy ihttps pypi douban com simple 豆瓣的镜像地址 加速下载 推荐使用安装 pyqt5 的工具包 pi

    2026年3月19日
    2
  • 使用POI替换word中的特定字符/文字改进版

    推荐:http://www.cnblogs.com/roucheng/p/3504465.html

    2021年12月26日
    101
  • python矩阵转置与zip(*)的使用

    python矩阵转置与zip(*)的使用Python中的矩阵转置方法有如下几种:使用双重循环做(最直接,最本质的方法)importrandomrow=3column=4array=[[random.randint(0,10)for_inrange(column)]for_inrange(row)]print(“砸门先随机创建一个呗:”,array)res=[]foriinrange(column):tmp=[]forjinrange(row):tmp.

    2022年6月2日
    57
  • springboot打包成jar jsp文件无法访问

    springboot打包成jar jsp文件无法访问出现这种情况的原因是静态资源没有打包到 jar 如何解决 ps 本编博客不是解决 thymeleaf 模板引擎的问题第一步在 pom xml 文件的 amp lt build amp gt amp lt build amp gt 标签下添加如下 amp lt resources amp gt amp lt resou

    2025年11月10日
    8
  • 服务响应时间与分布(p99指标)

    服务响应时间与分布(p99指标)分析服务响应时间分布 如 均值 中位值 P95 值 P99 值等如何计算平均值我们考察一个服务器的性能 除了 QPS 数据外 还会考察响应时间 当服务器负载增高时 往往会伴随着响应时间的增长 但是这个值该如何度量 以精准的表现服务器当前之负载呢 最常用的值为平均值 表示服务的平均响应时间 通过该值我们能够知道服务当前响应的所有请求耗时的平均值 例如平均耗时为 100ms 表示服务器当前请求的总耗时 请求总数量 通过该值 我们大体能知道服务运行情况 但是对于具体有多少个请求的耗时比 100ms 要大 大多少

    2026年3月17日
    2

发表回复

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

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