两个BCD码的数字相减,用汇编怎么写?

两个BCD码的数字相减,用汇编怎么写?
看书上说,应将减数先化为100的补数,两数相加,再用DA指令调整;那么什么是100的补数啊???
我想将A和60相减,这里A是BCD数。
悬赏分:0 - 解决时间:2010-3-3 22:55
;------------------------------------------------
最佳答案:
51单片机的DA A指令,放在SUBB指令后面,是不起作用的;
必须把SUBB指令变换成ADD指令,才能用DA A指令进行调整。
.
里提到了“减法”变换成“加法”,就要借用时钟“倒拨”变成“正拨”的方法,倒拨15分钟,和正拨45分钟,效果相同。15和45就是以60为模的互补的数。
.
两位十进制数,是以100为模的,减去60,和加上40,效果是相同的。
100,可以分解,写成99+1,按照十六进制,可以写成9AH。
那么,将A和60相减,程序如下:
    MOV   R0, A        ;保存被减数.
    MOV   A,   #9AH     ;100
    CLR   C
    SUBB A,   #60H     ;减去减数,得到100的补数.
    ADD   A,   R0       ;使用加法即可.
    DA    A             ;调整为BCD数.
;完
;------------------------------------------------
回答者:    做而论道 - 十二级   2010-3-3 22:45
提问者对于答案的评价:非常感谢!!!
原文网址: http://zhidao.baidu.com/question/140257770.html
;------------------------------------------------
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值