首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAW指令功能

DAW指令功能
EN

Stack Overflow用户
提问于 2021-03-12 08:00:15
回答 1查看 132关注 0票数 0

我知道DAW指令在将两个压缩的BCD数相加后调整WREG中的8位结果,但是DAW指令能够调整WREG中更高的位结果吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-12 15:20:19

ADDWFSUBWF期间,DC (数字进位)标志捕获加法期间从位3开始的进位输出,而C (进位)标志捕获加法期间从位7开始的进位输出。减法中的进位是基于x-y=x+ NOT (y) + 1生成的,其中NOT是一的补码。这意味着这些进位标志的值是各自借用的补码。

DAW将6加到W的最低有效半字节,即W<3:0>,如果半字节的值大于9,则设置 DC

DAW将6加到W的最高有效半字节,即W<7:4>,如果半字节的值大于9,则设置 C

如果将表示BCD数字的两个半字节相加,则得到的半字节值为0x0、0x12,这就是为什么需要组合两个条件以检测该四位字节的小数进位。例如,当我们将0x990x99相加时,和是0x32,并且DC=1和C=1,因为0x9 + 0x9 = 0x12意味着从每个半字节进行进位。因为这两个标志都已设置,所以后面的DAW会将6加到每个半字节上,从而产生0x98,这是正确的BCD结果。

DAW指令仅仅遵循上述规则,并且无法知道W寄存器的内容和标志是否实际上是两个BCD数字相加的结果。因此,假设我们添加了0xee (不是有效的BCD编号)和0x11,结果是0xffDCC都将为零。下面的DAW会发现每个半字节都大于9,并将6加到每个半字节上,结果是0x55

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66592293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档