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

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

[日期:2008-07-01 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
使用二进制数做2位数BCD减法(即做二个数补码的加法),但须注意调整其相减结果成为正确的BCD数。
    1.如果差的低4位(LSD)>9,则 从LSD减去6(产生的DC被加到下一位数)
2.步骤1它成后,如果差的高4位(MSD)>9,则从MSD减去6。
一般扩展到二位数以上时,每个BCD位都使用以上的原则,标志的测试(步骤2)是在二补码的加法完成后进行,当0X20=9,结果是VE,取十补码以取得它的值。
2.  程序:
main     MOV a , @0x23  ; 主程序
         mov  Num-1 , A
         mov  A ,@0x99
         mov  Num-2 , A
         call   BCDSUB
         mov   A , @0X99
         mov  Num-1, A
         mov  A , @0x00
         mov  A , Num-2
         call   BCDSUB
SELF    goto   SELF
         end
 
 
      Num-1=0X20
  Result=0X20
  Num-2=0X21
0-flow=0X21;
       BCDADD mov  A,Num-1;做二进制减法
         SUb  Num-2, A
  CLR  Num-1;
       RLC  Num-1; 保存进位
       JBS  STATUS, DC; DC=1?
       JMP  Adjust; 不是,LSD调整
       JBS  Num-2, 3
       JMP Over-1
       JBC  Num-2,2
       JMP  adjust1;LSD结果调整
       JBS  Num-2,1
       JMP Over-1
 Adjst1 mov A ,@6 ;不是,转到MSD进行处理
       JMP  over1 ;LSD调整(减6)
       Sub  Num-2,A
 Over-1 JBS Num-1,0 ;C=0?
  JMP  adjst2 ;是,进行MSD调整
       CLR Num-1
       JBS Num-2,7 ;不是,MSD>9?
       RET
       JBC Num-2 ,6
       JMP Adjst2
       JBS  Num-2 ,5
       RET
  adjst2 mov A , @0X60  ; MSD调整
       Sub Num-2 , A
       CLR Num-1 ,
       JBS STATS,C 
       MOV   A ,  1
       MOV  Num-1,A
  Over RET
 
阅读:
录入:JETTA

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


点评: 字数
姓名:
站长推荐