您的位置:首页单片机义隆单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

EM78系列单片机--无符号的BCD加法

[日期:2008-07-01 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
二进制做BCD加法,一定要注意每一位相加结果的调整,以转换成BCD的数位,本程序使用二个步骤来完成结果调整,(产生DC标志)
1.如果和的最低有效位是大于9的数,或DC=1时,将和加6
2.经过步骤1后,如果最高有效位大于9,或相加后C=1,则将和加上60H(即加6到MSD)
扩展程序到2位数以上时,所有位相都必须带C标志(或DC)一起相加,而且上面的原则沿深到每一位数的处理,即从原数相加,步骤1、步骤2的加法所产生的进位都必须进位到下一位。
 
2.         程序:
主程序
MAIN    MOV A ,@0X99 ;
        MOV Num-1 ,A
        MOV A ,@0X99
        MOV Num-2 ,A
        CALL BCDAD
SELF   JMP SELF
        END
 
 Num-1=0X20; 0X20放加数,0X21放被加数
         Result=0X20; 运行后和放在0X21,进位
         Num-2=0X21; 放到0X20中
         0-Flow=0X21;
;加法子程序   
BCDADD MOV  A,Num-1
             ADD  Num-2, A; 作二进制加法
             CLR  Num-1
             RLC  Num-1; 保存进位
             JBC  STATUS, DC; DC=0?
             JMP  Adjust; 不是,调整,LSD
             MOV  A, 0X06;
             ADD Num-2, A; 通过LSD加6,测试LSD>9否
             JBC  STATUS, ;判断C=1?
             INC  Num-1
             JBC  STATUS , DC;DC=0?
             SUB  Num-2     ;LSD<9恢复原数据
JMP  over1
     Adjust  MOV A, @6H     jLSD加6调整;
             ADD Num-2, A
    Over1   mov A, @60H   ;MSD加6调整,           
            ADD Num2, A
            JBC STATUS,C  ;MSD<9
             JMP over3
            JBC Num-1, 0
            SUB Num-2  ;
          RET
    Over3 MOV A,@01H ;保存和的进位 
          MOV Num-1,A
          RET
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告