Kelp-Space 是記錄一些生活雜事的Blog
如有任何程式設計的問題歡迎到 飛特技術論壇 討論

2008-07-06

十六進制轉十進制

晶片:HT46R24
語言:組合語言
此副程式最大值為FFFFFFH轉16777215。
位數越大時會自動切換連加倍率,所以速度還OK(不會永遠都笨笨的加1)。
使用方法:
1.把欲轉換的十六進制值丟到hmode3(最高位元),hmode2,hmode1(最低位元)
2.呼叫sum_dec.:
3.把數值從nmode4~nmode1中提出來
例如:
丟0CH進去hmode1其他為零,傳回值nmode1為12H。
複製程式碼(Copy to clipboard)

        nmode1                equ        [55h]        ;十進制傳回值最低位元組
        nmode2                equ        [56h]        ;十進制傳回值
        nmode3                equ        [57h]        ;十進制傳回值
        nmode4                equ        [58h]        ;十進制傳回值最高位元組
        hmode1                equ        [5bh]        ;十六進制引數最低位元組
        hmode2                equ        [59h]        ;十六進制引數
        hmode3                equ        [5ah]        ;十六進制引數最高位元組


;------hex to dec--------------
sum_dec:
        clr                nmode1
        clr                nmode2
        clr                nmode3
        clr                nmode4
        sz                 hmode1
        jmp                seach
        sz                 hmode2
        jmp                seach2
        sz                 hmode3
        jmp                seach3
        ret
seach:
        inc                nmode1
        mov                a,nmode1
        clr                status
        daa                nmode1

        sz                 status
        call               redeem

        sdz                hmode1
        jmp                seach
        sz                 hmode2
        jmp                seach2
        sz                 hmode3
        jmp                seach3
        ret
seach2:
        dec                hmode2
        mov                a,56h
        add                a,nmode1
        clr                status
        daa                nmode1
        mov                a,status
        addm               a,nmode2

        mov                a,02h
        add                a,nmode2
        clr                status
        daa                nmode2
        mov                a,status
        addm               a,nmode3
        sz                 hmode2
        jmp                seach2
        sz                 hmode3
        jmp                seach3
        ret
seach3:
        dec                hmode3
        mov                a,36h
        add                a,nmode1
        clr                status
        daa                nmode1
        mov                a,status
        addm               a,nmode2

        mov                a,55h
        add                a,nmode2
        clr                status
        daa                nmode2
        mov                a,status
        addm               a,nmode3
        sz                 c
        inc                nmode4

        mov                a,06h
        add                a,nmode3
        daa                nmode3
        sz                 c
        inc                nmode4
        sz                 hmode3
        jmp                seach3
        ret
redeem:
        mov                a,status
        addm               a,nmode2

        clr                status
        mov                a,nmode2
        daa                nmode2
        mov                a,status
        addm               a,nmode3
        ret
;-----------------------------

沒有留言:

張貼留言