当前课程知识点:单片机原理及应用 > 3 指令系统 > 3.12 加法指令 > 加法指令
同学 你好
今天我们将介绍加法指令
当我们了解了标志位寄存器
PSW的功能之后
我们就可以来具体的看一看
加法指令 减法指令等算术运算指令
我们先来看一看不带进位位的加法指令
ADD A , 源操作数
注意该指令中目的操作数必须是累加器A
其功能是把源操作数加上累加器A
加的结果再回存到累加器A
同时改变PSW中相关标志位的值
下面我们来看一道例题
通过例题我们就能够了解
ADD加法指令的具体的运行情况
那么已知累加器A的内容是2BH
PSW中的内容原来是全零
执行指令ADD A , # 2BH
求累加器A进位标志位Cy
溢出标志位OV
半径位标志位AC
和奇偶校验标志位P各为多少
整体的PSW标志位计算器的
内容又为多少
好
我们来看看具体的指令
该指令功能是实现把累加器A的数据
2BH和立即数2BH相加
那么加的结果为二进制数
01010110
也即16位二进制数的结果56H
这个结果
我们知道会回存到累加器A中
所以该条指令执行完之后
A的内容就变成了56H
同时在运算过程中
我们可以看到最高位并没有进位
所以Cy进位标志位CPU会自动的设为零
次高位也没有进位
因此根据我们前面说的溢出标志位
等于最高位进位与次高位进位的异或
所以OV溢出标志位也设为零
即结果没有溢出
但是
第三位向第四位有进位
所以半进位标志位AC会设为一
设为一是由CPU自动设定的
累加器A中的结果56H里面
我们可以知道有四个1 即偶数个1
所以奇偶标志位P会设为零
因为只有当A中有奇数个1时
P才设为1
这里累加器A中是四个1 偶数个1
所以CPU会自动的把奇偶标志位P设为零
根据上述标志位的情况
我们就可以推知在标志位寄存器PSW的值
最后就是40H
下面我们再来看一看
带进位位加法指令ADDC A , 源操作数
和前面的ADD类似
ADDC的目的操作数也必须是累加器A
具体的功能
ADDC是把累加器A和源操作数相加
同时还要再加上进位标志位Cy的值
然后再把加的结果回存到累加器A中
并且要改变PSW中相关标志位的值
我们同样来看一道例题
我们看到假设累加器A中原来的值是98H
工作寄存器R2的值
是E3H PSW标志位寄存器的值是零
执行指令ADDC A , R2后
求A的值是多少
Cy是多少
OV是多少
AC是多少
P是多少
PSW又是多少
该指令是实现把累加器A的数据9BH
和工作寄存器R2中的数据E3H相加
同时还要加上进位标志位Cy的值零
加的八位结果我们也看到
是二进制数01111110
也即16进制数的7EH
这个7EH将会回存到累加器A中
所以该条指令执行完之后
累加器A的内容就变成了7EH
同时在运算过程中
我们可以看到最高位是有进位的
所以这个时候CPU会把Cy进位标志位设为1
次高位我们看到没有进位
所以根据溢出标志位OV等于
最高位进位与次高位进位的抑或
这个时候
OV就会被CPU设为1
表示这个结果是有溢出的
在做加法时
第三位向第四位我们看到没有进位
所以这个时候半进位标志位AC被CPU设为0
而累加器A中的结果7DH我们可以看到
它是有六个1 即偶数个1
所以奇偶标志位P将被设为0
根据上述标志位的情况
我们可以推知标志位寄存器
PSW就等于84H
今天的话我们主要介绍了两条加法指令
一个是不带进位位的加法ADD
一个是带进位加法指令ADDC
请同学们仔细地体会这两条指令的功能
以及这两条指令是如何影响
标志位状态寄存器的值的
今天的课就到这里
同学们 再见
-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 第八章作业-作业