汇编 DA A十进制调整指令

本文介绍了在二进制加法中,如何处理BCD码(二进制编码的十进制数)的加法运算。由于BCD码的特殊性,直接的二进制加法可能会导致结果错误,特别是在涉及无效编码区域时。解决方法是对运算结果进行十进制调整修正,通过累加器的低四位和高四位判断是否需要加6。DAA指令可以自动完成这一过程。举例说明了56H和67H两个压缩的BCD数相加后,如何通过DAA指令得到正确结果23H。
摘要由CSDN通过智能技术生成

         二进制加法指令不能完全适用于BCD码十进制的加法运算,故应对压缩的BCD码的加法结果需要进行有条件的修正。

出错原因及调整方法

BCD码(4位二进制编码)共有十六个编码,但只用了其中的10个,剩余六个就没有用到。而这六个没有用到的编码为无效编码。故1位BCD码加法运算出错的情况有两种:

1)相加结果大于9无进位,及已经进入无效编码区;

2)相加结果有进位,及已经跳过无效编码区;

无论哪一种出错情况,都是因为六个无效编码造成的。

调整方法是把运算结果加6调整,即所谓的十进制调整修正。

修正方法

1)累加器低四位大于9或辅助进位位Ac=1,则进行低四位加6修正。

2)累加器高四位大于9或进位位Cy=1,则进行高四位加6修正。

3)累加器高四位为9,低四位大于9,则高四位和低四位分别加6修正。

整个过程由DA A可自动实现

举例

(A)=56H,(R5)=67H,把他们看作两个压缩的BCD数进行BCD数加法。

执行指令:

ADD A,R5
DA A

                0101  0110     (56H)

+)          0110  0111      (67H)

=             1011  1101                                   高四位和第四位都大于9 故要都加6来对结果修正、

+)          0110  0110

=          1  0010  0011

结果(A)=23H,Cy=1。

56+65=123 结果是正确的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值