打印
[匠人手记]

[求助]16位二进制转BCD码问题

[复制链接]
3286|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
那就用临时变量喽,就像你现在做的这样。

使用特权

评论回复
5
kooshare|  楼主 | 2009-11-6 08:45 | 只看该作者
问题已经解决了,感谢匠人。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

61

帖子

1

粉丝