打印

这个问题困了小弟很久,请大哥们指点一下小弟。。

[复制链接]
1814|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
泰仔|  楼主 | 2007-11-2 19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, AD, TE, CD, BCD
最近为10位AD转BCD码的事困了几天。网上查了很多资料,也看不出个究竟,申明小弟是初小者。
 ;本程序实现双字节二进制数转化为3字节压缩BCD码。
;入口参数:原二进制数在SOUH:SOU中。
;出口参数:结果在RLT:SOUH:SOU中。
;占用资源:W,STATUS,FSR,023H,024H,025H,026H,028H,029,02AH,两重堆栈。

DBTBCD      MOVF        SOU,W
            MOVWF       TEMP2
            MOVF        SOUH,W
            MOVWF       TEMP3
            CLRF        SOU
            CLRF        SOUH
            CLRF        RLT
            BCF         STATUS,C
            MOVLW       .16
            MOVWF       CNT
LOOPC1      RLF         TEMP2,F  从这里以下就看不懂了,帮一下小弟了!
            RLF         TEMP3,F   这里带C左移是不是全乱了????
            RLF         SOU,F
            RLF         SOUH,F
            RLF         RLT,F
            DECFSZ      CNT,F
            GOTO        ADJDEC1         
            RETURN           ;整个子程序结束
ADJDEC1     MOVLW       SOU
            MOVWF       FSR
            CALL        ADJBCD1     ;调整RLT
            MOVLW       SOUH
            MOVWF       FSR
            CALL        ADJBCD1     ;调整RLTH
            MOVLW       RLT
            MOVWF       FSR
            CALL        ADJBCD1     ;调整TEMP1
            GOTO        LOOPC1
;********************调整BCD********************
ADJBCD1     MOVLW       03H
            ADDWF       INDF,W      ;低四位加3
            MOVWF       TEMP1       ;暂存
            BTFSC       TEMP1,3     ;结果大于7,
            MOVWF       INDF        ;则存起来
            MOVLW       30H
            ADDWF       INDF,W      ;高四位加3
            MOVWF       TEMP1              
            BTFSC       TEMP1,7     ;结果大于7,
            MOVWF       INDF        ;则存起来
           RETURN
       END;

请给出详解,小弟不堪感激!找了很多资料都末能颔悟。。
沙发
兰天白云| | 2007-11-2 22:00 | 只看该作者

如果结果正确,中间不用管

如果出于学习目的,那就慢慢看,这东西不好懂,我以前看懂了,自己写了个子程序,一直在用,现在忘了,你最好看看有关算法的书

使用特权

评论回复
板凳
l0p0c| | 2007-11-7 15:41 | 只看该作者

o(∩_∩)o...

使用特权

评论回复
地板
李丰涛| | 2007-11-8 12:15 | 只看该作者

不要钻牛角尖~把这个世界都想明白

使用特权

评论回复
5
ZHAOYU2005| | 2007-11-8 15:06 | 只看该作者

随便找几个数按上面的方法试一下结果,看结果对不

在试的过程中就能明白,不信你试一下,不要什么都想在脑袋里全部想明白、捋顺(爱因斯坦之类的人也许可以),太难了,拿张纸,拿杆笔一步步进行,保准能明白

使用特权

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

本版积分规则

9

主题

21

帖子

0

粉丝