51单片机ADD,ADDC与SUBB指令详细分析
ADD与ADDC 加法指令:
例如:执行0xfefe+0x0003
由于单片机只能处理8位数据加减法 具体操作如下:
/低八位加法//
mov r0,#0xfe ;0xfefe 先将低八位给r0寄存器
mov r1,#0x03 :0x0003先将低八位给r1寄存器
mov a,r0
ADD a,r1
MOV r2, A r2存放计算结果低八位
执行ADD加法指令后 A寄存器中的值为数据低八位相加得0x01,cy进位标志位为1。
/高八位减法//
mov r0,#0xfe ;0xfefe 先将高八位给r0寄存器
mov r1,#0x00 :0x0003先将高八位给r1寄存器
mov a,r0
ADDC a,r1
MOV r3, a ; r3存放计算结果高八位
执行ADDC加法指令后 A寄存器中的值为数据高八位相加得0xfe在加上低八相加后向高八位的进位 也就是进位标志位中的 1,最后结果a寄存器为0xff。
注意:当加上CY位后 CY标志位清零
减法指令SUBB 加法指令:
例如:执行0xfe9f-0x00af
由于单片机只能处理8位数据加减法 具体操作如下:
/低八位减法//
mov r0,#0x9f ;0xfe9f 先将低八位给r0寄存器
CLR Cy ;由于减法指令只有一个 所以低八位做减法运算先将借位标志位Cy清零
mov r1,#0xaf :0x00af 先将低八位给r1寄存器
mov a,r0
subb a,r1
MOV r2, a ;保存低八位减法所得结果
当a减r1数据时候,由于a寄存器中的值比r1寄存器中值小 所以向高位借一位 就把借位标志位Cy置1 ,结果为0xf0
/高八位减法//
mov r0,#0xfe ;0xfe9f 先将低八位给r0寄存器
mov r1,#0x00:0x00af 先将低八位给r1寄存器
mov a,r0
subb a,r1
MOV r3, a ;保存高八位减法所得结果
当a减r1数据时候,由于0xfe9f低八位做减法向高八位借一位,所以高八位做减法时候 r0寄存器中0xfe减掉借走的一位,也就是 借位标志位Cy。也就是r0寄存器中的数据减去cy标志位后在减r1寄存器的值0x00所得结果a为0xfd
注意:当减掉CY位后 CY标志位清零
51单片机ADD,ADDC与SUBB指令详细分析相关推荐
- 基于51单片机的DS1302涓流充电计时芯片详细学习(时钟制作)
目录 前言 一.初学者需要了解DS1302的一些基本特性 二.脉冲串模式数据传输 1.单字节写入 2.单字节读取 3.BCD码的转换 三.理论存在实践开始(代码模块) 1.DS1302时钟模块原理图 ...
- 51单片机外设系列:LCD1602 的详细编程
前言,LCD1602是一个比较常用的单片机显示外设,下面我们从它的显示原理,来分析用51单片机编程的思路.另外结尾还提供了完成的程序代码参考. 一.LCD1602的外观.结构和基本参数 引脚功能解析: ...
- C51汇编语言16进制加法,51单片机汇编语言带进位加法指令(4条)
算术运算指令共有24条,算术运算主要是执行加.减.乘.除法四则运算.另外MCS-51指令系统中有相当一部分是进行加.减1操作,BCD码的运算和调整,我们都归类为运算指令.虽然MCS-51单片机的算术逻 ...
- C语言烧写C51单片机的线,51单片机烧写程序过程以及详细说明【图文】
Step 1:Keil软件的安装 1.选中文件夹中的C51V900安装程序并打开,如图: 2.在安装对话框里一直选择Next,直到Finish完成Keil的安装. Step 2: 安装USB转串口线的 ...
- 51单片机计算机实物焊接,51单片机实验DIY焊电源--串口详细步骤
对于DIY(自己动手焊板子)的朋友在做以下实验是先要将实验板上的电源(用来给单片机提供5V 的稳压电源),和串口(用来给单片机下载程序)焊接好. 第一步焊接电源模块: 以是电源的原理图,以下是实物图 ...
- pcf8574c语言测试程序,51单片机+PCF8574简易密码锁程序 带详细注释 1602显示
#include #include "intrins.h" #define uchar unsigned char #define uint unsigned int #defin ...
- 51单片机——点亮第一盏灯详细操作过程
在Keil5 中new 一个project保存到合适的位置 在project中new一个文件将他保存为LED.C 选中AT89C51芯片 钩中生成16进制文件,可直接烧录到板子上 #include & ...
- C语言sfr指令,51单片机的指令和sfr汇总.pdf
51单片机的指令和sfr汇总 51 单片机编程备忘录 一.指令 51 系列的指令说复杂也不复杂,说简单吧,也比较繁琐讨厌.总体上,可以分为7 个大类,如下表. 序号 大类 子类 说明 1 辅助 伪指令 ...
- 51单片机的延时子程序
延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器 周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念.机器周期和指 令周期的区 ...
最新文章
- (转)[翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper
- Javaweb 项目内所有页面都是404问题
- Exploiting the Syntax-Model Consistency for Neural Relation Extraction(关系抽取,语法模型,跨领域关系抽取
- Java内存中的堆和栈
- Mac 上如何使用“备忘录”管理扫描文稿?
- JVM中也有并发GC,CMS机制
- 做快乐的程序员 - 李战 在淘宝网的一次讲座
- Python xls文件和xlsx文件格式互相转换
- 串口/COM口、USB、RS232、RS422、RS485的区别
- 【RSA原理1】浅谈--什么是非对称加密?(加密通信的原理)
- 第十三届蓝桥杯大赛软件赛省赛(Java 大学B组)
- 深入理解epoll模型
- Java我的2020年终盘点
- BioPython ① | 统计蛋白序列中20种氨基酸的的个数和频率
- 微信公众号开发(一)------对接公众号
- 哪些手机支持android q,华为首批升级Android Q机型曝光 共17款
- 微信小程序全栈实战(二):列表循环渲染
- 国内k8s集群部署的几种方式
- 酷派:真正的闷声发大财
- js iframe.contentWindow_iframe页面调用主页面.html