当前课程知识点:单片机原理及应用 > 3 指令系统 > 3.14 逻辑运算指令 > 逻辑运算指令
同学
你好
今天我们将学习51单片机的逻辑运算指令
我们先来看一看几个单操作数的指令
请特别注意
单操作数逻辑运算指令的操作数
只能是累加器A
我们看看这条指令CLR A
A该指令的功能是把累加器A的内容清零
而指令CPL A的功能是把累加器A的内容
按位来进行取反
这是单操作数的清零和取反的指令
我们再来看一看
循环移位指令
首先看一下指令RL A
该指令实际上是Rotate LEFT
就是循环左移
实现累加器A的内容循环左移
如图所示
就是把累加器A里面的八位二进制数循环左移一位
注意最高位将移到累加器A的最低位
而指令RR A的功能是
是实现累加器A的数据循环右移一位
注意这个时候将把累加器A的最低位
移动到最高位
而指令RLC A
注意一下这个时候指令带了一个C
就表示的是带进位位的循环左移
同学们可以看这边PPT的图形
它是什么
它是把累加器A的最高位
首先移到进位标志位Cy
然后进位位移动到累加器A的最低位
这就是带进位位的循环左移
下面再来看一下指令RRC A
它的功能由于名字中带了一个C
所以它的功能就是带进位的循环右移
那么这条指令是把累加器A的最低位
移到进位标志位Cy
然后再把进位标志位Cy的内容
移到累加器A的最高位
如此来实现带进位位的循环右移
好的
了解了这些指令之后
下面我们来看一道例题
设累加器A的内容是00101011B
这个B表示的是bit二进制数
进位标志位Cy里面的值是1
分别执行下列单条指令后
请问累加器A的内容是多少
Cy的内容是多少
下面我们就根据每条指令的功能来分析一下
指令运行完之后
相关的累加器A和Cy的内容是多少
第一条指令CPL A
是把累加器A的内容按位取反
不会影响Cy标志位的状态
所以该条指令执行完之后
累加器A的内容就是11010100
Cy的内容为1不变
好
下面我们再来看一下第二条指令RL A
这条指令是实现把累加器A的内容循环左移一位
所以如果原来累加器A的内容是00101001
那么这条指令执行完之后
累加器A的内容就变成了
01010110
并且不会改变进位标志位Cy内容
所以Cy里面的内容依然是1
再来看一下第三条指令RLC A
这条指令是带进位位的循环左移
所以把累加器A的内容再循环左移的时候
那么A的最高位0会移到Cy中
Cy里面的内容会移到累加器A的最低位
因此该条指令执行完之后
由于原来A的内容是00101011
而Cy的内容原来是1
所以该条指令执行完之后
累加器A内容就是01010111
Cy内容是0
好
下面我们再来看一看双操作数的逻辑运算指令
前面的几条指令操作数只有一个
并且只能是累加器A
所以称作是单操作数指令
下面的指令
它里面的操作数是两个
双操作数指令有ANL
实现逻辑与
还有ORL是实现逻辑或
还有就是XRL这个是实现操作数的逻辑异或
我们可以通过一道例题来说明一下
这三个指令的具体功能
我们看一看
首先我们假设累加器A的内容是10XXXXXX
这里面的X表示
该位可以是0也可以是1
是属于不定的状态
如果说累加器A内容原来是10XXXXXX
我们先来看第一条指令
是XRL A , #0C0H
XRL这条指令是
实现两个操作数的按位来进行异或
就是将A的数据与C0H按位来相异或
注意某位和1异或相当于该位取反
某位和零相异或
相当于该位保持不变
所以该条指令相当于将累加器A的内容的
第七和第六位取反
下面再来看这条指令
ORL A , #03H
这条指令是将A的数据与03H按位相或
也要注意一下
某位和1或 表示把该位置一
某位和0或 相当于是把这个位保持不变
所以该条指令相当于将累加器A的内容
第一和第零位置一
我们再来看一下
指令ANL A , # 0F3H
这条指令它是将累加器A的数据
与F3H按位相与
注意某位如果与1相与
相当于该位保持不变
而与0相与 表示把该位清零
所以该条指令相当于将类加器A的内容的
第三和第二位清零
据此我们可以判断出
执行这三条指令之后
累加器A的内容就变成了
01XX0011B
那么今天我们就主要介绍了
几条单操作数的逻辑运算指令
和双操作数的逻辑运算指令
请同学们下去之后
仔细的体会这几条指令的功能
今天的课就到这里
同学们再见
-1.1 单片机的名称
--单片机的名称
-1.2 单片机的相关概念
--单片机的相关概念
-1.3 单片机的设计语言及软件
-1.4 单片机的发展
--单片机的发展
-1.5单片机的应用
--单片机的应用
-1.6 第一单元作业
-2.1 单片机的结构框图
--单片机的结构框图
-2.2 80C51内部结构
-2.3 信号引脚
--信号引脚
-2.4 内部数据存储器RAM
-2.5 特殊功能寄存器
--特殊功能寄存器
-2.6 堆栈
--堆栈
-2.7 内部程序存储器ROM
-2.8 存储器的结构特点
--存储器的结构特点
-2.9 并行输入输出接口电路
-2.10 并口功能与时序
--并口功能与时序
-2.11 工作方式
--工作方式
-2.12 最小应用系统
-- 最小应用系统
-2.13 第二单元作业
-3.1 指令格式
--指令格式
-3.2 立即寻址与直接寻址
-3.3 寄存器寻址与寄存器间接寻址
-3.4 变址间接寻址与位寻址
-3.5 内部RAM传送指令
-3.6 外部RAM传送指令
-3.7 ROM传送指令
--ROM传送指令
-3.8 交换指令
--交换指令
-3.9 堆栈操作指令
--堆栈操作指令
-3.10 传送类指令习题讲解
-3.11 算术运算类指令特点
-3.12 加法指令
--加法指令
-3.13 加法习题、减法和乘除指令
-3.14 逻辑运算指令
--逻辑运算指令
-3.15 布尔变量操作指令
--布尔变量操作指令
-3.16 无条件转移指令
--无条件转移指令
-3.17 条件转移指令
--条件转移指令
-3.18 循环转移指令
--循环转移指令
-3.19 子程序相关指令
--子程序相关指令
-3.20 并口访问指令及指令小结
-3.21 第三单元作业
-4.1 汇编程序约定
--汇编程序约定
-4.2 宏指令
--宏指令
-4.3 汇编控制指令
--汇编控制指令
-4.4 汇编语言程序设计步骤
-4.5 顺序程序举例
-- 顺序程序举例
-4.6 单重分支结构
--单重分支结构
-4.7 多重分支结构
--多重分支结构
-4.8 单重循环结构
--单重循环结构
-4.9 计数控制循环程序
--计数控制循环程序
-4.10 特征控制循环程序
-- 特征控制循环程序
-4.11 多重循环程序
--多重循环程序
-4.12 子程序的概念
--子程序的概念
-4.13 子程序设计注意事项
-4.14 子程序举例
--子程序举例
-4.15 第四单元作业
-5.1 系统扩展
--系统扩展
-5.2 51单片机扩展方法
-5.3 存储器单元位数扩充方法
-5.4 存储器容量单元扩充方法
-5.5 译码线选法
--译码线选法
-5.6 程序存储器的类型
--程序存储器的类型
-5.7 程序存储器的扩展
--程序存储器的扩展
-5.8 数据存储器的扩展
--数据存储器的扩展
-5.9 存储器综合扩展
--存储器综合扩展
-5.10 单片机存储器系统的特点
-- 单片机存储器系统的特点
-5.11 第五单元作业
-6.1 中断技术
--中断技术
-6.2 中断优先级及中断系统内部结构
-6.3 中断控制寄存器及中断响应过程
-6.4 中断请求的撤消
--中断请求的撤消
-6.5 外部中断举例
--外部中断举例
-6.6 定时器/计数器
--定时器/计数器
-6.7 定时计数器工作方式及程序编写
-6.8 定时器举例
--定时器举例
-6.9 第六单元作业
-7.1 并行接口
-- 并行接口
-7.2 并口举例
--并口举例
-7.3 并口扩展芯片
--并口扩展芯片
-7.4 8155连接方式及编程
-7.5 键盘接口技术
--键盘接口技术
-7.6 按键处理程序及举例
-7.7 键盘扫描子程序
-- 键盘扫描子程序
-7.8 显示接口技术
--显示接口技术
-7.9 多位字符静态显示
--多位字符静态显示
-7.10 多位字符动态显示
--多位字符动态显示
-7.11 第七单元作业
-8.1 流水灯控制系统设计
--html
-8.2 数码管显示系统设计
--html
-8.3 按键控制系统设计
--html
-8.4 中断控制系统设计
--html
-8.5 定时计数器系统设计
--html
-8.6 串口通信系统设计
--html
-8.7 汉字显示系统设计
--html
-8.8 单片机烧录方法
--单片机烧录方法
-8.9 第八章作业-作业