打印

24位二进制到BCD码转换

[复制链接]
3009|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
asgpc|  楼主 | 2007-9-11 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个24位的二进制数到BCD码的转换程序,程序已经调试出来,可以正确运行。但总觉得效率低了点,求高手帮我改进一下。修改的目标是尽量缩短转换的时间。我写的程序最大执行数量是1200条左右。
#include<VRS51L3074_Keil.inc>
        Bin  equ  40H                   ;二进制高位
            ;41H
            ;42H    
                                 
       BCD  equ   30H                ;存放转换后的千万位
            ;31H        ;存放转换后的百万位
            ;32H        ;存放转换后的十万位
            ;33H        ;存放转换后的万位
            ;34H        ;存放转换后的千位
            ;35H           ;存放转换后的百位
                 ;36H                ;存放转换后的十位
            ;37H        ;存放转换后的个位
    ORG 0000H
    LJMP main

    ORG 0200H
main:        
    MOV    40H,#0A9H  ;存放要转换的24位二进制数
    MOV    41H,#08AH
    MOV    42H,#0C7H

    MOV    30H,#00H
    MOV    31H,#00H
    MOV    32H,#00H
    MOV    33H,#00H
         MOV    34H,#00H
    MOV    35H,#00H
    MOV    36H,#00H
    MOV    37H,#00H

         ACALL  Loop1

    NOP

    NOP

    AJMP   $

Loop1:
         MOV    R0,#Bin
    CJNE   @R0,#98H,Judge11
    INC    R0
    CJNE   @R0,#96H,Judge12
    INC    R0
    CJNE   @R0,#80H,Judge12
    INC    30H
    AJMP   BRET
Judge11:
    JC     Loop2
SUB1:
    INC    30H

    MOV    A,42H
    SUBB   A,#80H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#96H
    MOV    41H,A

    MOV    A,40H
    SUBB   A,#98H
    MOV    40H,A

    AJMP   Loop1

Judge12:
         JNC    SUB1

Loop2:
    MOV    R0,#Bin
    CJNE   @R0,#0FH,Judge21
    INC    R0
    CJNE   @R0,#42H,Judge22
    INC    R0
    CJNE   @R0,#40H,Judge22
    INC    31H
    AJMP   BRET

Judge21:
    JC     Loop3        
SUB2:
    INC    31H

    MOV    A,42H
    SUBB   A,#40H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#42H
    MOV    41H,A

    MOV    A,40H
    SUBB   A,#0FH
    MOV    40H,A

    AJMP   Loop2
Judge22:
         JNC    SUB2

Loop3:
         MOV    R0,#Bin
    CJNE   @R0,#01H,Judge31
    INC    R0
    CJNE   @R0,#86H,Judge32
    INC    R0
    CJNE   @R0,#0A0H,Judge32
    INC    32H
    AJMP   BRET
Judge31:
         JC     Loop4 
SUB3:
    INC    32H

         MOV    A,42H
    SUBB   A,#0A0H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#86H
    MOV    41H,A

    MOV    A,40H
    SUBB   A,#01H
    MOV    40H,A
    AJMP   Loop3
Judge32:
         JNC    SUB3

Loop4:    CLR    C
         MOV    R0,#Bin
    MOV    A,@R0
    JNZ    SUB4
    INC    R0
    CJNE   @R0,#27H,Judge41
    INC    R0
    CJNE   @R0,#10H,Judge42
    INC    33H
    AJMP   BRET
Judge41:
         JC     Loop5
SUB4:
    INC    33H

         MOV    A,42H
    SUBB   A,#10H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#27H
    MOV    41H,A

    MOV    A,40H
    SUBB   A,#00H
    MOV    40H,A

    AJMP   Loop4
Judge42:
         JNC    SUB4

Loop5:
         MOV    R0,#Bin
    INC    R0
    CJNE   @R0,#03H,Judge51
    INC    R0
    CJNE   @R0,#0E8H,Judge52
    INC    34H
    AJMP   BRET
Judge51:
         JC     Loop6
SUB5:
    INC    34H

         MOV    A,42H
    SUBB   A,#0E8H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#03H
    MOV    41H,A

    AJMP   Loop5
Judge52:
        JNC    SUB5
Loop6:
    CLR    C
    MOV    R0,#Bin
    INC    R0
    MOV    A,@R0
    JNZ    SUB6
    INC    R0
    CJNE   @R0,#64H,Judge6
    INC    35H
    AJMP   BRET
Judge6:
         JC     Loop7
SUB6:
    INC    35H
         MOV    A,42H
    SUBB   A,#64H
    MOV    42H,A

    MOV    A,41H
    SUBB   A,#00H
    MOV    41H,A

    AJMP   Loop6        

Loop7:
         MOV    R0,#Bin
         INC    R0
         INC    R0
         CJNE   @R0,#0AH,Judge7
         INC    36H
         AJMP   BRET
Judge7:
         JC     Loop8
        
SUB7:
         INC    36H
         MOV    A,42H
         SUBB   A,#0AH
         MOV    42H,A
         AJMP   Loop7
Loop8:
         MOV    37H,42H
BRET:
         RET
     END

相关帖子

沙发
ayb_ice| | 2007-9-11 18:54 | 只看该作者

网上去搜一个就是了...

不会是在这显摆吧...

使用特权

评论回复
板凳
conwh| | 2007-9-11 22:50 | 只看该作者

结构上有点乱,用移位做X2加尾数的方法比较简短

使用特权

评论回复
地板
谈的元| | 2007-9-12 21:36 | 只看该作者

conwh能否讲哈思路?

使用特权

评论回复
5
lsfsxfljj| | 2007-9-12 21:41 | 只看该作者

网上找一个20句就OK了,51子程序集

使用特权

评论回复
6
yutingf1| | 2014-12-28 09:39 | 只看该作者
asgpc楼主,你这个是什么方法啊,说说。好像不好理解

使用特权

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

本版积分规则

13

主题

15

帖子

0

粉丝