当前课程知识点:单片机原理及应用 > 3 指令系统 > 3.13 加法习题、减法和乘除指令 > 加法习题、减法和乘除指令
同学 你好
前面的话我们已经介绍过了加法指令
今天我们来看一道
实现多字节加法的例题
是实现双字节数X
存放在片内RAM的51H和50H单元
Y存放在片内RAM 52H和53H的单元
我们的程序想实现
X加Y把这个结果Z存放到片内RAM的
54H 55H 56H的三个单元
因为两个16进制相加结果可能超过16进制
结果我们可能必须要用三个单元来存放
由于51单片机本身是一个八位的单片机
它的一条加法指令只能实现
两个单字节八位二进制数的相加
如果要想进行例题中的两个双字节数相加
这就需要多用几次加法指令才行
按照这种思路例题中
我们先用一条不带进位的ADD加法指令
实现低字节数的相加
再用带进位加法指令ADDC实现高字节相加
带进位位的目的是要考虑低字节相加时
可能会向高位有进位
同时两个双字节数相加
结果可能会超过双字节
所以我们说必须要用三个字节
来存储最后的结果
并且的话最后也会用一条ADDC指令
来计算结果最高位及第三个字节的情况
具体的程序我们在PPT中已经列出
那么每条指令我们前面都已经讲过
注释我们也注释的非常详细
你可以按照我们刚才的提示自行分析
每条指令的功能
好
了解了加法指令之后
下面我们再来看一看减法指令
减法指令只有一个
是带借位的减法指令SUBB
具体的格式是
SUBB A , 源操作数
具体功能为把累加器A的内容减去源操作数
同时还要减去借位标志位Cy的值
然后再把减的结果回存到累加器A
并且改变PSW中相关标志位的值
我们再来看一看一道例题
设累加器A中原来的值是7AH
工作寄存器R2的值是7AH
Cy即为借位标志位开始进位
也可以借位
在减法中它叫借位标志位
那么Cy最开始是等于0
执行指令SUBB A , R2
请问累加器A的值是多少
借位标志为Cy的值是多少
溢出标志位OV的值是多少
奇偶标志位P的值是多少
半借位标志位AC的值是多少
该指令我们知道是实现
把累加器A的数据7AH
和工作寄存器R2中的数据7AH相减
同时还要减去借位标志为Cy的值 零
减的八位结果我们可以看到是二进制
数
全零00000000
也即16进制数的00H
这个结果会回存到累加器A
所以该条指令执行完之后
累加器A的内容是00H
同时在预算过程中
我们可以看到最高位并没有借位
所以CPU会把借位标志位Cy置为零
次高位也没有借位
所以根据OV我们前面说过溢出标志位
它是等于最高位借位与次高位借位的异或
所以OV也会被设为零
即结果没有溢出
第三位向第四位
我们看到也没有借位
所以半借位标志位AC也会被设为零
那么累加器A中的结果我们知道是00H
即没有零个1
所以是偶数个1
这样CPU也会把奇偶标志位P设为0
这就是减法指令
了解了减法指令之后
下面让我们再来看一看增量指令
INC单操作数
这条指令为单操作数指令
可以实现操作数自加一个1
并且结果会回存
类似的是减量指令
DEC也是单操作数
可以实现操作数的自减一个1结果也会回存
这两个指令执行过程中
并不会影响标志位的状态
最后我们来看一看乘法指令和除法指令
乘法指令是MUL AB
注意下AB中没有逗号
MUL AB 它为乘法指令
其功能为八位累加器A的内容
和寄存器B的内容相乘
我们知道两个八位数相乘结果一般会超过八位数
一般的话是16位
所以这个结果的低八位会自动回存到累加器A
而结果的高八位会回存到寄存器B
同时标志位Cy会自动的置0
当结果高字节B等于0时
标志位OV等于0
否则OV等于1
再来看一看除法指令
除法指令是DIV AB
该指令的功能是实现累加器A的内容
除以寄存器B的内容
结果中商会回存到累加器A
除法的余数会存到寄存器B
同时标志位Cy也是直接置0
当除数B等于0时
会把标志位置1
否则OV溢出位是零
我们同样的给出了两道例题来说明
乘法和除法的含义
我们看一看例题A
原来累加器A中的内容是96
十进制数96对应的16进制数就是60H
B中原来是192对应的16进制数是COH
请问执行完指令MUL AB后
累加器A的内容是多少
B是多少
Cy是多少
OV是多少
P是多少
这套指令实现的功能就是
实现96乘以192
等于18432
同学们要注意我们人是习惯于做十进制数的乘法的
但是在计算机里面它会把十进制数
转换成二进制数
用二进制来实现相乘
所以最终的结果18432
实际上会转换成4800H
我们是用16进制数来表示二进制的
相当于是4800H
4800H中低八位00H会送给累加器A存放
高八位的48H会送给累加器B来进行存放
Cy直接清零
由于B中结果是400H不为零
所以OV直接置为1
累加器A中是00H 0个1
所以奇偶标志位P是会置为零
这是乘法指令
我们再来看除法指令
这道例题
A的内容原来是151对应的16进制数的F1H
B寄存器的内容是对应的16进制数是ODH
当执行完除法指令DIV AB后
我们知道这个除法相当于是
151除以13
这个商是18 余数是7
一样的在计算机里面不会存储十进制数
会把它转化成二进制数来进行存储
所以151除以13商18对应的16进制数是12H
余数的7对应的16进制数是07H
商12H会在累加器A中来进行存放
余数07H会在B中来进行存放
Cy是直接置零
由于除数B,13并不为零
所以溢出位OV是直接置零
那么A中是12H
它里面是两个1
注意一下要转化成二进制数里面是两个1
偶数个1
所以奇偶标志位也是直接置零
好的
以上是我们对乘法除法指令的介绍
请同学们下去之后仔细的体会
这两条指令的功能
今天的课就到这里
同学们再见
-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 第八章作业-作业