51单片机之逻辑运算指令ANL、ORL、XRL等

51单片机之逻辑运算指令ANL、ORL、XRL等文章目录前言一、简单操作指令CLR、CPL、SWAPCLRACPLASWAPA二、位移指令RL、RR、RLC、RRCRLARRARLCARRCA三、逻辑“与”指令ANLANLA,XXXANLdirect,XXX四、逻辑“或”指令ORLORLA,XXXORLdirect,XXX五、逻辑“异或”指令XRLORLA,XXXXRLdirect,XXX前言…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺


前言

逻辑操作指令包括与、或、异或、清除、求反、移位等操作,其操作数都是8位


一、简单操作指令 CLR、CPL、SWAP

CLR英文全称:Clear
CPL英文全称:Complement
SWAP英文全称:Swap


CLR A

指令名称:累加器A清0指令
目的:将累加器A中的内容清零

CPL A

指令名称:累加器A取反指令
目的:将累加器A的内容逐位取反

SWAP A

指令名称:累加器半字节交换指令
目的:将累加器A的高低两半字节交换

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
CLR A 0 -> A × × × 1 1
CPL A (/A) -> A × × × × 1 1
SWAP A (AL)<–> (AH) × × × × 1 1

AL:A0123低半字节位;
AH:A4567高半字节位;
*表示无影响,√表示有影响,下同

例 (A) = 07H 即 (A) = 0000 0111B

  • CLR A:表示A的8位都位零,(A) = 0000 0000B;
  • CPL A:表示A的内容逐位取反,(A) = 1111 1000B = F8H;
  • SWAP A:表示A的高低半字节交换,(A) = 0111 0000B = 70H。

二、位移指令 RL、RR、RLC、RRC

RL英文全称:Rotate Left
RR英文全称:Rotate Right
RLC英文全称:Rotate Left throught the Carry flag
RRC英文全称:Rotate Right throught the Carry flag


RL A

指令名称:累加器A循环移指令
目的:累加器A的内容最高位变最低位,其他位都升一位

RR A

指令名称:累加器A循环移指令
目的:累加器A的内容最低位变最高位,其他位都降一位

RLC A

指令名称:累加器A连同进位位循环移指令
目的:累加器A的内容最高位进入CY,CY位的内容进入最低位,其他位都升一位

RRC A

指令名称:累加器A连同进位位循环移指令
目的:累加器A的内容最低位进入CY,CY位的内容进入最高位,其他位都升一位

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
RL A A循环左移一位 × × × × 1 1
RR A A循环右移一位 × × × × 1 1
RLC A A带进位循环左移一位 × × 1 1
RRC A A带进位循环右移一位 × × 1 1
  • RLC可以做乘2运算;
  • 左移一位可以看作乘2,前提是第7位是0;
  • 右移一位可以看作除2,前提是第0位是0;

例无符号8位二进制数(A) = 1011 1101B = BDH, CY = 0

  • RL A:将A的第7位送入第0位,其余位提升一位,结果为:(A) = 0111 1011B

  • RR A:将A的第0位送入第7位,其余位降低一位,结果为:(A) = 1101 1110B

  • RLC A:将A的第7位送入CY中,将CY的内容送入第0位,结果为(CY) = 1,(A) = 0111 1010B,表示17AH,正好是BDH两倍;

  • RRC A:将A的第0位送入CY中,将CY的内容送入第7位,结果为(CY) = 1,(A) = 0101 1110B,A中表示57H。


三、逻辑“与”指令 ANL

ANL英文全称:ANL Logic


ANL A, XXX

目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“与”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
ANL A, Rn (A) ∧ (Rn) -> A × × × 1 1
ANL A, @Ri (A) ∧ ((Ri)) -> A; i = 0, 1 × × × 1 1
ANL A, direct (A) ∧ (direct) -> A × × × 2 1
ANL A, #data (A) ∧ data -> A × × × 2 1
  • ANL能将某些位清零,对于想清零的位与0进行“与”逻辑,对于想保持原来的位与1进行“与”逻辑;

例 (A) = 1111 1100B = FCH,(10) = 2FH,(2FH) = 2DH,(R0) = 10H

  • ANL A, R0:结果为(A) = 0001 0000B;
  • ANL A, @R0:结果为(A) = 0010 1100B;
  • ANL A, 10H:结果为(A) = 0010 1100B;
  • ANL A, #10H:结果为(A) = 0001 0000B。

ANL direct, XXX

目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“与”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
ANL direct, A (direct) ∧ (A) -> direct × × × × 2 1
ANL direct, #data (direct) ∧ data -> direct × × × × 3 2

四、逻辑“或”指令 ORL

ORL英文全称:OR Logic


ORL A, XXX

目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“或”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
ORL A, Rn (A) ∨ (Rn) -> A × × × 1 1
ORL A, @Ri (A) ∨ ((Ri)) -> A; i = 0, 1 × × × 1 1
ORL A, direct (A) ∨ (direct) -> A × × × 2 1
ORL A, #data (A) ∨ data -> A × × × 2 1
  • ORL能将某些位置一,对于想置一的位与1进行“或”逻辑,对于想保持原来的位与0进行“或”逻辑;

例 (A) = 1001 1100B = 9CH,(E1) = DFH,(DFH) = 2DH,(R0) = E1H

  • ORL A, R0:结果为(A) = 1111 1101B = FDH;
  • ORL A, @R0:结果为(A) = 1101 1111B = DFH;
  • ORL A, E1H:结果为(A) = 1101 1111B = DFH;
  • ORL A, #E1H:结果为(A) = 1111 1101B = FDH。

ORL direct, XXX

目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“或”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
ORL direct, A (direct) ∨ (A) -> direct × × × × 2 1
ORL direct, #data (direct) ∨ data -> direct × × × × 3 2

五、逻辑“异或”指令 XRL

XRL英文全称:Exclusive-OR Logic


XRL A, XXX

目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“异或”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
XRL A, Rn (A) ⊕ (Rn) -> A × × × 1 1
XRL A, @Ri (A) ⊕ ((Ri)) -> A; i = 0, 1 × × × 1 1
XRL A, direct (A) ⊕ (direct) -> A × × × 2 1
XRL A, #data (A) ⊕ data -> A × × × 2 1
  • XRL能将某些位置取反;

XRL direct, XXX

目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“或”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
XRL direct, A (direct) ⊕ (A) -> direct × × × × 2 1
XRL direct, #data (direct) ⊕ data -> direct × × × × 3 2

51单片机之系统指令

51单片机之数据转移指令MOV、MOVX、MOVC等

51单片机之位操作指令SETB、CPL等

51单片机之控制转移指令SJMP、LJMP等

51单片机之算术运算指令ADDC、SUBB等


由本人水平有限,文章难免有错误,望告知

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

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

(2)
上一篇 2022年7月26日 下午2:46
下一篇 2022年7月26日 下午2:46


相关推荐

  • AOP如何实现及实现原理

    AOP如何实现及实现原理概述 最近在开发中遇到了一个刚好可以用 AOP 实现的例子 就顺便研究了 AOP 的实现原理 把学习到的东西进行一个总结 文章中用到的编程语言为 kotlin 需要的可以在 IDEA 中直接转为 java 这篇文章将会按照如下目录展开 AOP 简介 代码中实现举例 AOP 实现原理 部分源码解析 1 AOP 简介相信大家或多或少的了解过 AOP 都知道它是面向切面编程 在网上搜索可以找到很多的解释

    2026年3月19日
    2
  • ubuntu安装qt教程_配置溶液的步骤

    ubuntu安装qt教程_配置溶液的步骤Qt是一个跨平台的C++图形用户界面库,我们平时所说所使用的Qt,准确的来说是它的GUI编程部分。Qt提供给应用程序开发者建立图形用户界面所需要的功能,并且Qt很容易扩展。基本上,Qt和XWindow上的Motif、Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCl以及ATl是相同类型的东西。1.下载Qtqt下载地址2.安装Qt本人安装的是qt-opensource-linux-x64-5.9.5.run打开终端,输入命令:“sudochmod-R777q

    2022年8月31日
    4
  • sscanf函数用法详解

    sscanf函数用法详解以前一直以为 sscanf 只能用来简单的提取用空格隔起来的字符串 知道之前遇到了一些列字符串处理问题 详细研究起来这个函数尽然还是有很强大类似于正则表达式的功能 首先我们先来看函数定义 定义函数 intsscanf constchar str constchar format nbsp nbsp nbsp nbsp nbsp 函数说明

    2026年3月20日
    1
  • 使用adb安装apk命令格式

    使用adb安装apk命令格式adbinstall[-r][-s]-r表示重新安装APK包,-s表示将APK包安装到SD卡上adbinstall[-k]-k表示只删除应用程序,但保留该程序所用的数据和缓存目录

    2022年5月18日
    51
  • redis和zk实现分布式锁有什么区别_redis分布式锁和zk分布式锁区别

    redis和zk实现分布式锁有什么区别_redis分布式锁和zk分布式锁区别前言本文介绍下分布式锁的一个使用场景分享本文的缘由是因为今天在写代码时需要处理一个原子性问题,场景是:业务功能需要先查询数据,再根据数据判断是否要更新数据,在这个查询+更新的过程必然会存在高并发下的原子性问题那么如何解决这个问题呢,那么就要说到我们的主角:分布式锁了分布式锁介绍分布式锁:即在多集群多节点环境下确保只有一个线程可以拿到锁,防止并发出现的问题,类似于synchronized,只不过synchronized不能处理多节点的问题解决上述问题的一种解决方式就是使用分布式锁,虽然性能会比较低

    2025年10月2日
    5
  • 最新Connectify注冊码(序列号) Connectify3.7序列号 破解版

    最新Connectify注冊码(序列号) Connectify3.7序列号 破解版

    2021年12月3日
    62

发表回复

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

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