打印
[其它应用]

中颖4位MCU的减法汇编指令

[复制链接]
278|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
为你转身|  楼主 | 2023-8-25 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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.


使用特权

评论回复
评论
为你转身 2023-8-25 17:35 回复TA
转载于:https://www.cnblogs.com/outs/p/5004859.html 
沙发
为你转身|  楼主 | 2023-8-25 17:34 | 只看该作者
SBC比较奇特,举几个例子:

1)

CY = 0的前提下,

LDI   70H,   08H
LDI   71H,    07H
SBC   70H

结果为A = 0,CY= 1

使用特权

评论回复
板凳
为你转身|  楼主 | 2023-8-25 17:34 | 只看该作者
2)

CY = 1的前提下,

LDI   70H,   08H
LDI   71H,    07H
SBC   70H

结果为A = 1,CY= 1

使用特权

评论回复
地板
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
3)

CY = 0的前提下,

LDI   70H,   06H
LDI   71H,    07H
SBC   70H

结果为A = E,CY= 0

使用特权

评论回复
5
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
4)

CY = 1的前提下,

LDI   70H,   06H
LDI   71H,    07H
SBC   70H

结果为A = F,CY= 0

使用特权

评论回复
6
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
5)

CY = 0的前提下,

LDI   70H,   07H
LDI   71H,    07H
SBC   70H

结果为A = F,CY= 0

使用特权

评论回复
7
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
6)

CY = 1的前提下,

LDI   70H,   07H
LDI   71H,    07H
SBC   70H

结果为A = 0,CY= 1

使用特权

评论回复
8
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
SBC的行为为什么要设计为这样,暂时没有明白,如有知道的朋友,请赐教。

使用特权

评论回复
9
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
现在终于明白SBC的行为为啥要设计得这么奇特。这条指令在计算带借位的减法时,大有用处。

使用特权

评论回复
10
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
例如,程序里有个CNT[CNT0, CNT1]要减至0,用如下的代码即能轻松实现。

使用特权

评论回复
11
为你转身|  楼主 | 2023-8-25 17:35 | 只看该作者
1 LOOP:
2         SBI        CNT0,        01H      ;CNT的低4位减1
3         LDI        TBR,         00H       ;累加器A清0
4         SBC        CNT1                    ;如果上一步的减法有借位,则CNT的高4位会减1;如果没有借位,则高4位不变
5         BNZ        LOOP                    ;如果CNT不为0,则继续

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

405

帖子

0

粉丝