【汇编】逻辑指令

news/2024/12/5 7:29:39/

文章目录

  • 一、逻辑运算指令
    • (一)各逻辑运算指令格式及操作
      • (1)逻辑非指令 NOT
      • (2)逻辑与指令 AND
      • (3)逻辑或指令 OR
      • (4)异或指令 XOR
      • (5)测试指令 TEST
    • (二)应用实例
  • 二、移位指令
    • (一)算术移位指令
      • (1)算术左移指令 SAL
      • (2)算术右移指令 SAR
    • (二)逻辑移位指令
      • (1)逻辑左移指令 SHL
      • (2)逻辑右移指令 SHR
    • (三)循环移位指令
      • (1)循环左移指令 ROL
      • (2)循环右移指令 ROR
      • (3)带进位的循环左移指令 RCL
      • (4)带进位的循环右移指令 RCR
    • (四)使用注意事项

一、逻辑运算指令

  1. OPR不能为立即数
  2. 至少有一个数在寄存器中,NOT 除外,源操作数是立即数除外
  3. NOT 不影响标志位,其他使 CF=0、OF=0,AF 无定义
  4. 可用标志位:SF、ZF、PF

(一)各逻辑运算指令格式及操作

(1)逻辑非指令 NOT

  • 格式NOT OPR
  • 执行的操作(OPR) ← ¬(OPR)

(2)逻辑与指令 AND

  • 格式AND DST,SRO
  • 执行的操作(DST) ← (DST)∩(SRC)

(3)逻辑或指令 OR

  • 格式OR DST,SRO
  • 执行的操作(DST) ← (DST)∪(SRC)

(4)异或指令 XOR

  • 格式XOR DST,SRO
  • 执行的操作(DST) ← (DST)⊕(SRC)

(5)测试指令 TEST

  • 格式TEST OPR1,OPR2
  • 执行的操作(OPR1)∩(OPR2)

TEST 指令与AND运算的工作原理相同,但与AND指令不同的是,它不会更改第一个操作数。因此,如果我们需要检查寄存器中的数字是偶数还是奇数,我们也可以使用TEST指令执行此操作,而无需更改原始数字(TEST 相当于与操作但不保存结果

(二)应用实例

在这里插入图片描述

二、移位指令

  1. 进位 CF 始终是最后被移出的一位,AF 位无定义
  2. 溢出 OF 只有移 1 位最高位改变时设置
  3. 循环移动只影响 CF 和 OF
  4. 其他移动还影响 SF、ZF、PF

(一)算术移位指令

(1)算术左移指令 SAL

  • 格式SAL OPR,CNT

  • 执行的操作

    在这里插入图片描述

(2)算术右移指令 SAR

  • 格式 SAR OPR,CNT

  • 执行的操作

    在这里插入图片描述

(二)逻辑移位指令

(1)逻辑左移指令 SHL

  • 格式 SHL OPR,CNT

  • 执行的操作

    在这里插入图片描述

(2)逻辑右移指令 SHR

  • 格式 SHR OPR,CNT

  • 执行的操作

    在这里插入图片描述

(三)循环移位指令

(1)循环左移指令 ROL

  • 格式 ROL OPR,CNT

  • 执行的操作

在这里插入图片描述

(2)循环右移指令 ROR

  • 格式 ROR OPR,CNT

  • 执行的操作

    在这里插入图片描述

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

  • 格式 RCL OPR,CNT

  • 执行的操作

    在这里插入图片描述

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

  • 格式 RCR OPR,CNT

  • 执行的操作

    在这里插入图片描述

(四)使用注意事项

  • OPR 可用除立即数以外的任何寻址方式

  • 针对 CNT 的不同数值执行的操作 (以 SHL 为例)

    • CNT = 1 时 ➡️ SHL OPR,1
    • CNT > 1 时 ➡️ MOV CL,CNTSHL OPR,CL
  • 条件标志位

    • CF = 移入的数值
    • CNT = 1 时,最高有效位的值发生变化 ➡️ OF = 1
      CNT = 1 时,最高有效位的值不变 ➡️ OF = 0
  • 移位指令

    SF、ZF、PF 根据移位结果设置,AF无定义

  • 循环移位指令

    不影响 SF、ZF、PF(奇偶)、AF


参考文章

汇编语言-移位指令


http://www.ppmy.cn/news/1552498.html

相关文章

UIE与ERNIE-Layout:智能视频问答任务初探

内容来自百度飞桨ai社区UIE与ERNIE-Layout:智能视频问答任务初探: 如有侵权,请联系删除 1 环境准备 In [2] # 安装依赖库 !pip install paddlenlp --upgrade !pip install paddleocr --upgrade !pip install paddlespeech --upgrade In …

https/http访问接口工具类,附带ssl忽略证书验证,以及head头部的添加-java版

复制即用 package utils;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; impo…

C# 绘制GDI红绿灯控件

C# 绘制GDI红绿灯控件 using System; using System.Windows.Forms; using System.Drawing;public class TrafficLightControl : Control {protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics g e.Graphics;g.SmoothingMode System.Drawing.Drawin…

网络(TCP)

目录 TCP socket API 详解 套接字有哪些类型?socket有哪些类型? 图解TCP四次握手断开连接 图解TCP数据报结构以及三次握手(非常详细) socket缓冲区以及阻塞模式详解 再谈UDP和TCP bind(): 我们的程序中对myaddr参数是这样…

什么是工控机?相对于商业电脑有哪些优势

工控机,全称工业控制计算机,是一种专门设计用于工业环境中的计算机。与传统的商业电脑(如个人电脑、笔记本电脑等)相比,工控机在构建和选材上考虑了更为严苛的工作条件与功能需求。它们通常用于工业自动化、数据采集、…

【Nacos02】消息队列与微服务之Nacos 单机部署

Nacos 部署 Nacos 部署说明 Nacos 快速开始 Nacos 快速开始 版本选择 当前推荐的稳定版本为2.X Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Re…

LVS默认的工作模式支持哪些负载均衡算法?

LVS默认的工作模式支持哪些负载均衡算法? LVS(Linux Virtual Server)默认支持多种负载均衡算法,这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点: 1. 轮询调度(Round Robin Sched…

使用数据层进行数据生命周期管理

作者:来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中,我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段,因此我们将涉及: 将集群划分为层&…