中颖4位MCU的减法汇编指令
1, SUB M
执行动作: M - A -> A, 如果M-A的过程中没有产生借位,则CY= 1,如果产生了借位,则CY= 0.
其中,A为累加器。
2, SBI M, I
执行动作:M - I -> A, 如果M - I的过程中没有产生借位,则CY= 1,如果产生了借位,则CY= 0.
3, SBC M
执行动作:M - A - (!CY) -> A, 如果M - A - (!CY)的过程中没有产生借位,则CY = 1, 如果产生了借位,则CY = 0.
SBC比较奇特,举几个例子:
1)
CY = 0的前提下,
LDI 70H, 08H
LDI 71H, 07H
SBC 70H
结果为A = 0,CY= 1
2)
CY = 1的前提下,
LDI 70H, 08H
LDI 71H, 07H
SBC 70H
结果为A = 1,CY= 1
3)
CY = 0的前提下,
LDI 70H, 06H
LDI 71H, 07H
SBC 70H
结果为A = E,CY= 0
4)
CY = 1的前提下,
LDI 70H, 06H
LDI 71H, 07H
SBC 70H
结果为A = F,CY= 0
5)
CY = 0的前提下,
LDI 70H, 07H
LDI 71H, 07H
SBC 70H
结果为A = F,CY= 0
6)
CY = 1的前提下,
LDI 70H, 07H
LDI 71H, 07H
SBC 70H
结果为A = 0,CY= 1
SBC的行为为什么要设计为这样,暂时没有明白,如有知道的朋友,请赐教。
现在终于明白SBC的行为为啥要设计得这么奇特。这条指令在计算带借位的减法时,大有用处。
例如,程序里有个CNT[CNT0, CNT1]要减至0,用如下的代码即能轻松实现。
LOOP:
SBI CNT0, 01H ;CNT的低4位减1
LDI TBR, 00H ;累加器A清0
SBC CNT1 ;如果上一步的减法有借位,则CNT的高4位会减1;如果没有借位,则高4位不变
BNZ LOOP ;如果CNT不为0,则继续
中颖4位MCU的减法汇编指令的更多相关文章
- 常用ARM汇编指令
常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区 作者:xuyuanfan77 [字体:大 中 小] 在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...
- 经常使用ARM汇编指令
一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...
- arm汇编指令
ARM处理器的指令集可以分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.加载/存储指令.协处理器指令和异常产生指令6大指令 一.跳转指令 跳转指令用于实现程序流程的跳转 跳转指令分类 Ⅰ ...
- 汇编指令-CMP、TEQ(5)
cmp:(compare)指令进行比较两个操作数的大小 格式: cmp oprd1,oprd2 比较oprd1和oprd2操作数,然后通过助记符来实现想要的判断. teq: (test equal ...
- AU3中BitAnd与Win32汇编中的&按位进行与操作的本质思考
心越静,思考的越透彻.不要着急,宇宙有求必应!我可能是最笨的才会写出来进行思考,写出来至少自己在碰到这些本质上的问题不会再度卡壳.本着"没有交流的思考不是完整的思考"的原则,我将这 ...
- Uboot中汇编指令
LDR(load register)指令将内存内容加载入通用寄存器 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到 ...
- [zhuan]arm中的汇编指令
http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text& ...
- ARM中的---汇编指令
一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是"以下是代码段& ...
- 全球主流8位MCU芯片详细解剖No.2:英飞凌 XC866 - 全文
[导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核.片内FLASH及功能强大的外设集.此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V ...
随机推荐
- android关于The connection to adb is down, and a severe error has occured.这个问题的解决办法
有时在打开模拟器的时候会出现The connection to adb is down, and a severe error has occured.这个问题,这个问题的解决办法有两个: 方法一:找 ...
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP_转
转自:http://www.cnblogs.com/objectorl/archive/2012/09/27/vmware-ubuntu-nat-static-ip-settings.html 背景在 ...
- log file switch (checkpoint incomplete)
接手了一个新交接的库,alert日志频繁报告log file switch (checkpoint incomplete)事件 oracle文档解释: Waiting for a log switch ...
- (转)flexigrid 参数说明
本文为转载 http://simple1024.iteye.com/blog/1171090 项目用到这玩意,像样的API都是英文的,英文不好,所以经过各种搜集,flexigrid就整理了这么多用得上 ...
- SQL server 表之间的关系生成图
选择数据库名->数据库关系鼠标右键->新建数据库关系图 按着ctrl选择要添加的表 点击添加
- hdu 2528 Area
2014-07-30 http://acm.hdu.edu.cn/showproblem.php?pid=2528解题思路: 求多边形被一条直线分成两部分的面积分别是多少.因为题目给的直线一定能把多边 ...
- SLF4简介
The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logg ...
- ruby初步学习中遇到的错误
print <<off This is the second way of creating here document ie. multiple line string; off 报错: ...
- HDU 4888 Redraw Beautiful Drawings(最大流+判最大流网络是否唯一)
Problem Description Alice and Bob are playing together. Alice is crazy about art and she has visited ...
- Spring之我见
Spring 是什么(1) •Spring 是一个开源框架. •Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. • ...