两个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
;------------------------------------------------

你可能感兴趣的:(bcd码运算)