汇编 DA A 十进制调整指令

【转载】小伙伴们求同去《汇编 DA A十进制调整指令》, 一起来围观吧 https://blog.csdn.net/m0_58836581/article/details/121525715?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

二进制加法指令不能完全适用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 结果是正确的

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值