DJ12-2-3 逻辑运算指令与移位指令

news2025/1/23 3:55:13

目录

1. 逻辑运算指令

(1)与 AND

(2)或 OR

(3)非 NOT

(4)异或 XOR

(5)测试 TEST

2. 移位指令

(1)非循环移位

(2)循环移位


 

 

1. 逻辑运算指令

(1)与 AND

格式:AND  OPRD1,OPRD2

执行:OPRD1 ∧ OPRD2 → OPRD1

功能:实现两个操作数的按位相与。

要求:与加法指令对操作数的要求相同。

AND 指令的执行会影响全部 6 个状态标志位,且 CF = OF = 0。

由于不会产生进位/借位和溢出,所以 CF = OF = 0。又因为 AF 值不定,所以主要是对 ZF、SF、PF 位产生影响。

 

主要应用

① AND 指令主要用于使目的操作数某些位保持不变而另一些位清 0 。要执行这样的操作就是将要保持不变的位与 “1” 相与,将要清 0 的位与 “0” 相与。

② 使操作数不变,但影响 6 个状态标志位,并使 CF = OF = 0 。例如:AND  AX,AX。后续指令会根据需要对状态标志进行判断处理。

MOV 指令不影响 FLAGS,AND 指令能影响 FLAGS。

计算机是不知道操作数是有符号数还是无符号数的,进而不知道操作数的正负。若要运算,一律当作补码来处理。(只有程序员知道操作数的正负)

 

 

(2)或 OR

格式:OR  OPRD1,OPRD2

执行:OPRD1 ∨ OPRD2 → OPRD1

功能:实现两个操作数的按位相或。

OR 指令的执行会影响全部 6 个状态标志位,且 CF = OF = 0。

 

主要应用

① OR 指令主要用于使目的操作数某些位保持不变而另一些位置 1 。要执行这样的操作就是将要保持不变的位与 “0” 相或,将要置 1 的位与 “1” 相或。

与置零,或置一。

② 使操作数不变,但影响 6 个状态标志位,并使 CF = OF = 0 。例如:OR  AX,AX。

 

例题

若 AL 中低 7 位为有效数据,最高位留作校验位,初始值为 0,将 AL 中的数据生成偶校验码

 

 

 

(3)非 NOT

格式:NOT  OPRD

执行:OPRD取反 → OPRD

功能:实现一个操作数的按位取反。

NOT 指令的执行不会影响状态标志位。

改变 FLAGS 没有价值,因为我们自己都知道 FLAGS 应该怎么变。

CF = OF = 0,AF 值不定,PF 保持不变,SF 取反。

奇数 + 奇数 = 8,偶数 + 偶数 = 8,故 PF 保持不变。

 

 

(4)异或 XOR

格式:XOR  OPRD1,OPRD2

执行:OPRD1 ⊕ OPRD2 → OPRD1

功能:实现两个操作数的按位异或。

XOR 指令的执行会影响全部 6 个状态标志位,且 CF = OF = 0。

 

主要应用

① XOR 指令主要用于使目的操作数某些位保持不变,而另一些位变反。要执行这样的操作就是将要保持不变的位与 “0” 相异或,将要变反的位与 “1” 相异或。

根据异或的定义得到。

② 若两个操作数相同,则结果为 0 。 

 

 

(5)测试 TEST

格式:TEST  OPRD1,OPRD2

执行:OPRD1 ∧ OPRD2

功能:实现两个操作数的按位相与,但结果不送回目的操作数。

TEST 指令执行后两个操作数均不会发生改变。

TEST 指令的执行会影响全部 6 个状态标志位,且 CF = OF = 0。

 

例题

数据段中从 4000H 开始的单元中有 32 个 8 位的有符号数,要求统计出其中负数的个数并将统计结果保存到 DX 寄存器中。 

 

 

2. 移位指令

  • 目的操作数:通用寄存器、存储器。
  • 源操作数:移位次数(1 或 CL)。

 

(1)非循环移位

① 算术左移 SAL 和逻辑左移 SHL

格式:

执行:

若 1 次移位之后操作数的最高位与 CF 不相同,则 OF = 1,否则 OF = 0。

OF = 1对于 SHL 不表示溢出,对于 SAL 则表示溢出。

Q:我们之前学习算术左移时讲,符号位不变,有效数值左移,这里怎么把符号位移出去了,难道不会导致结果错误吗?

A:算术左移的本质就是将操作数乘 2,而乘 2 的结果是可能产生溢出的。1 次移位之后操作数的最高位与 CF 不相同,则代表移位前有效数值最高位与符号位不相同。这说明有效数值的绝对值已经超过表示范围的一半了,如果再乘 2,那么必定会发生溢出,即结果错误。反之,若移位前有效数值最高位与符号位相同,那么这里移位后的效果仍和我们之前学的一样,因此得到的是一个正确的结果。

 

 

② 算术右移 SAR 和逻辑右移 SHR

格式:

执行:

 

小结

对于逻辑移位指令 SHL 和 SHR,它们将目的操作数视为无符号数。

对于算术移位指令 SAL 和 SAR,它们将目的操作数视为带符号数。当移位次为 n 时,在结果不产生溢出的条件下,其作用分别相当于带符号数乘以 2^n 和除以 2^n 。  

 

例题

设 AX 中存放一个带符号数,若要实现 (AX) × 5 ÷ 2,可由以下几条指令完成,不考虑溢出时。

 

 

(2)循环移位

① 不带 CF 的循环移位指令

格式:

执行:

 

② 带 CF 的循环移位指令 

格式:

执行:

注意:目的操作数的最高位/最低位移入 CF,CF 原来的值移入最低位/最高位。

 

 

例题1

下面程序段对从数据段存储单元 M 开始的三字数据执行左移一位。


 

移位指令的共同特点:移出位都会送入 CF 状态位。

 

例题2

将 DX 和 AX 两个寄存器组成的 32 位有符号数,其中 AX 为低位部分。先进行 1 位右移操作,然后再进行 1 位左移操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022安洵杯babyphp

这个题没打出来有点可惜&#xff0c;感觉做的都差不多了&#xff0c;不过有些地方确实没理解&#xff0c;还是理解不到位 先来看序列化&#xff0c;这个序列化是不难的&#xff0c;不过有一个小坑&#xff0c;我们先理一遍顺序 array(0) { } <?php //something in flag.p…

王道考研——操作系统(第三章 内存管理)

一、内存的基础知识 什么是内存&#xff1f;有何作用&#xff1f; 这么做的原因是&#xff0c;程序本来是放在外存中的&#xff0c;放在磁盘中的&#xff0c;但是磁盘的读写速度很慢&#xff0c;而cpu的处理速度又很快 存储单元就是存放数据的最小单元&#xff0c;每一个地址…

计算机组成原理习题课第一章-3(唐朔飞)

计算机组成原理习题课第一章-3&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

Spark学习(6)-Spark SQL

1 快速入门 SparkSQL是Spark的一个模块, 用于处理海量结构化数据。 SparkSQL是非常成熟的 海量结构化数据处理框架. 学习SparkSQL主要在2个点: SparkSQL本身十分优秀, 支持SQL语言\性能强\可以自动优化\API简单\兼容HIVE等等。企业大面积在使用SparkSQL处理业务数据。 离线开…

想把iPad作为扩展屏,确发现macOS monterey随航功能不见了

居家办公最不爽的事情就是没有扩展屏&#xff0c;对于开发来说&#xff0c;效率是有影响的&#xff0c;于是便想着把iPad当作扩展屏来用 系统参数 mac&#xff1a; macOS monterey&#xff08;12.4&#xff09;&#xff1b;M1 iPad&#xff1a; iPad Pro 第2代&#xff0c;应该…

细粒度图像分类论文研读-2016

文章目录Compact Bilinear PoolingAbstractIntroductionCompact bilinear modelsA kernelized view of bilinear poolingCompact bilinear poolingSome properties of compact bilinear poolingCompact Bilinear Pooling Abstract 双线性模型很成功&#xff0c;但是双线性特征…

HNUCM-2022年秋季学期《算法分析与设计》练习14

目录 问题 A: 最小生成树&#xff08;Prim&#xff09; 问题 B: 牛妹的蛋糕 问题 C: 尼科彻斯定理 问题 D: 最小生成树&#xff08;Kruskal&#xff09; 问题 E: 单源最短路径问题 问题 F: 搭建电路 问题 G: 丛林小道 问题 H: 低碳出行 问题 A: 最小生成树&#xff08;P…

frontend webstorm plugin:插件推荐

目录CodeGlance &#xff08;左边地图&#xff09;GitToolBox &#xff08;Git提示&#xff09;Material Theme UI &#xff08;主题框架&#xff09;Nyan Progress Bar &#xff08;进度条&#xff09;Rainbow Brackets&#xff08;括号颜色&#xff0c;注意忽略变量&#xff…

【MySQL】事务和索引

文章目录事务&#xff08;Transaction&#xff09;1. 定义2. 如何操作事务2.1 SQL 语句操作事务的几个关键字2.2 使用 SQL 语句操作事务2.3 JDBC 操作事务3. 事务的四个特性&#xff1a;ACID3.1 Atomic&#xff08;原子性&#xff09;3.1.1 理解原子性3.2 Consistency&#xff…

H3C WX2510H无线控制器开局如何简单配置

环境&#xff1a; H3C-WX2510H version 7.1.064, Release 5435P02 AP H3CWA6320-C 问题描述&#xff1a; H3C WX2510h无线控制器开局如何简单配置 解决方案&#xff1a; 1.PC网卡设置ip192.168.0.111&#xff0c;连接随便一个LAN口 2.浏览器访问https://192.168.0.100…

面试处处碰壁?不慌,Java 核心面试文档.PDF 助你披荆斩棘

前言 首先强调几点&#xff1a; 1. 一定要谨慎对待写在简历上的东西&#xff0c;一定要对简历上的东西非常熟悉。因为一般情况下&#xff0c;面试官都是会根据你的简历来问的&#xff1b; 2. 能有一个上得了台面的项目也非常重要&#xff0c;这很可能是面试官会大量发问的地…

如何采集需要验证码登录的网站数据

如何抓取网页上的数据,需要登录&#xff1f;随着互联网的发展&#xff0c;移动支付技术的普及&#xff0c;以及人们对内容进行消费的观念逐渐养成。有很多网站&#xff0c;需要付费后才能查看&#xff0c;或者是开通会员之类的才能查看。针对这类网站&#xff0c;我们如何快速的…

性能测试环境部署

一、安装JDK 【步骤一】安装JDK (安装Jmeter之前需要配置JAVA环境) 下载jdk&#xff0c;到官网下载jdk&#xff0c;地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html 【JDK版本要和JMeter版本对应&#xff0c;如果JDK版本过高&#x…

深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及代码实现

《深度学习入门》系列文章目录 深度学习入门 (1)感知机 深度学习入门&#xff08;2&#xff09;神经网络 深度学习入门&#xff08;3&#xff09;神经网络参数梯度的计算方式 深度学习入门&#xff08;4&#xff09;【深度学习实战】无框架实现两层神经网络的搭建与训练过程…

黑盒测试用例设计 - 等价类划分法

说明&#xff1a;在所有测试数据中&#xff0c;具有某种共同特征的数据集合进行划分。 分类&#xff1a; 有效等价类&#xff1a;满足需求的数据集合无效等价类&#xff1a;不满足需求的数据集合 步骤&#xff1a; 明确需求设计一个新的测试用例&#xff0c;使其尽可能多的覆…

如何申请软件著作权

申请软件著作权的好处&#xff1a; 1、软件著作权登记证书是在软件著作权发生争议时&#xff0c;证明软件权利的最有力证。这不仅是在进行诉讼或者是发生一般纠纷时都能起到很好的证明作用&#xff0c;但是如果没有进行登记&#xff0c;著作权人的权利就很难获得全面的保护。 …

Linux-scheduler之负载均衡(一)

一、如何衡量CPU的负载 衡量CPU负载 简单衡量 CPU负载就绪队列的总权重CPU负载 就绪队列的总权重 CPU负载就绪队列的总权重 量化负载 CPU负载(采样期间累计运行时间/采样总时间)∗就绪队列总权重CPU负载 (采样期间累计运行时间/采样总时间)*就绪队列总权重 CPU负载(采样期…

Flutter 创建自己的对话框,不使用任何包!

创建自己的对话框&#xff0c;不使用任何包&#xff01; 原文 https://itnext.io/create-your-own-dialog-without-using-any-packages-7bb303f62471 前言 在本文中&#xff0c;我们将学习如何创建我们自己的 showDialog() 函数&#xff0c;并了解到底发生了什么。 正文 先看效…

Matplotlib 可视化50图:散点图(1)

导读 本系列将持续更新50个matplotlib可视化示例&#xff0c;主要参考Selva Prabhakaran 在MachineLearning Plus上发布的博文&#xff1a;Python可视化50图。 定义 关联图是查看两个事物之间关系的图像&#xff0c;它能够展示出一个事物随着另一个事物是如何变化的。关联图的类…

ctfshow(菜狗杯)

目录 web签到 一言既出 驷马难追 web2 c0me_t0_s1gn 我的眼里只有$ TAPTAPTAP Webshell 化零为整 无一幸免 遍地飘零 传说之下&#xff08;雾&#xff09; Is_Not_Obfuscate web签到 <?phperror_reporting(0); highlight_file(__FILE__);eval($_REQUEST[$_GET[…