[匠人手记] [求助]16位二进制转BCD码问题

[复制链接]
 楼主| kooshare 发表于 2009-11-5 16:14 | 显示全部楼层 |阅读模式
大家好,今天在匠人的帮助下完成了3字节/1字节除法运算,现在又碰到二进制转BCd码存在问题,按照匠人手记 P150页写程序,结果不正确,请指教,谢谢。

;********HEX TO BCD      
入口参数:POWER_DATAH,POWER_DATAL
出口参数:BCD2,DATAH_BCD,DATAL_BCD
         X:计数器
;****************************
HEX2BCD:
      LDX #16;循环计数
      CLR BCD2
      CLR DATAH_BCD
      CLR DATAL_BCD
HEX2BCD_LP:
      LDA DATAL_BCD;DATAL_BCD->A
      JSR ADJBCD1;BCD调整
      LDA TEMPA;回存调整值
      STA DATAL_BCD;A->DATAL_BCD
      
      LDA DATAH_BCD
      JSR ADJBCD1;BCD调整
      LDA TEMPA;回存调整值
      STA DATAH_BCD
      
      LDA BCD2
      JSR ADJBCD1;BCD调整
      LDA TEMPA;回存调整值
      STA BCD2
      
      ROL POWER_DATAL;带c循环左移
      ROL POWER_DATAH
      ROL DATAL_BCD
      ROL DATAH_BCD
      ROL BCD2
      DECX
      BNE HEX2BCD_LP;计数器减1不为0,跳转
      RTS

;*******************************************
ADJBCD1:
   STA TEMPA
   LDA #$03
   ADD TEMPA
   STA DATA_TEMP
   BRCLR 3,DATA_TEMP,ADJBCD1_LP1
   STA TEMPA
ADJBCD1_LP1:
   LDA #$30
   ADD TEMPA
   STA DATA_TEMP
   BRCLR 7,DATA_TEMP,ADJBCD1_LP2
   STA TEMPA
ADJBCD1_LP2:
   RTS
;*************************************
程序匠人 发表于 2009-11-5 16:20 | 显示全部楼层
先把注释补齐,再把输入和输出结果说一下。
 楼主| kooshare 发表于 2009-11-5 17:03 | 显示全部楼层
匠人,您好,我如果不用间接寻址来做,该怎么写ADJBCD1这个子程序?
;*******************************************
程序匠人 发表于 2009-11-5 17:07 | 显示全部楼层
那就用临时变量喽,就像你现在做的这样。
 楼主| kooshare 发表于 2009-11-6 08:45 | 显示全部楼层
问题已经解决了,感谢匠人。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

61

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部