音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

【非典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編 (no test!)

作者:dengm 欄目:單片機(jī)
【非典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編 (no TEST!)
;----- BIN2BCD.ASM ---------- Deng Miao  2006-3-28    Guang Zhou ----
;    INPUT:  16 BITS BIN  R3:R2
;    OUTPUT:  BCD IN R6:R5:R4
;    USAGE:  A, B, PSW, R7


      ; R3:R2   ====>R6:R5:R4
      ;
      ; 6 MS BITS (BIT 15 TO BIT 10)
      ; 1024 * (10*X+Y)
      ; = 10000.html">10000*X + 1000 Y + 200 * X + 20 * Y + 4 * (10*X+Y)
      ; = 10000.html">10000*X
      ;  +100 * ( (10*Y + X) + X )
      ;  + 2 * ( 2 * (10*X + Y) + 10*Y )   
BIN2BCD:
       MOV A, R3
       MOV B, #40
       DIV AB
       MOV R6, A ;        R6:== 10000.html">10000 * X

       MOV A, B
       RR A
       RR A
       ANL A, #0FH
       SWAP A
       MOV R4, A      ;   R4:== 10 * Y
       ORL A, R6      ;  
       MOV R5, A      ;   R5:==  10*Y + X
       SWAP A         ;   A:===  10*X + Y
       ADD A, ACC     ;   2 * (10*X+Y)
       DA A
       JNC $+4
         INC R5
         INC R5
       ADD A, R4      ;   2 * (10*X+Y) + 10*Y
       DA A
       JNC $+4
         INC R5
         INC R5
       ADD A, ACC     ; 2*(2*(10*X+Y)+10*Y)
       DA A
       MOV R7, A      ; R7:== *1
       MOV A, R6
       ADDC A, R5     ; (10*Y+X) + X
       DA A
       MOV R5, A      ; R5:== *100
       JNC $+3
         INC R6       ; R6:== *10000.html">10000
;-----------------------------
       MOV A, R2      ; BIT 9, BIT 8, BIT 7 TO BIT 0
       MOV C, B.0
       RRC A
       MOV C, B.1
       RRC A
       MOV B, #25
       DIV AB
       MOV R4, A ; * 100

       MOV A, R2
       ANL A, #3
       XCH A, B
       RL A
       RL A
       ORL A, B
       MOV B, #10
       DIV AB
       SWAP A
       ORL A, B
       
       ADD A, R7
       DA A
       XCH A, R4

       ADDC A, R5
       DA A
       MOV R5, A
       JNC $ + 3
         INC R6
       RET

2樓: >>參與討論
hotpower
哈哈,坐個(gè)沙發(fā),等待有人挑戰(zhàn)鄧苗...
 
3樓: >>參與討論
dengm
(指令周期數(shù) X BYTES) 小的為勝利
 
4樓: >>參與討論
dengm
【非典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編(已優(yōu)化)(<72周期)
;----- BIN2BCD.ASM ---------- Deng Miao  2006-3-28    Guang Zhou ----
;    INPUT:  16 BITS BIN  R3:R2
;    OUTPUT:  BCD IN R6:R5:R4
;    USAGE:  A, B, PSW, R7

      ; R3:R2   ====>R6:R5:R4
      ;
      ; 6 MS BITS (BIT 15 TO BIT 10)
      ; 1024 * (10*X+Y)
      ; = 10000.html">10000*X + 1000 Y + 200 * X + 20 * Y + 4 * (10*X+Y)
      ; = 10000.html">10000*X
      ;  +100 * ( (10*Y + X) + X )
      ;  + 2 * ( 2 * (10*X + Y) + 10*Y )

   
BIN2BCD:
       MOV A, R3
       MOV B, #40
       DIV AB
       MOV R6, A ;        R6:== 10000.html">10000 * X
       
       MOV A, B
       RL A
       RL A
       ANL A, #0F0H
       MOV R4, A      ;   R4:== 10 * Y
       ORL A, R6      ;  
       MOV R7, A      ;   R7:==  10*Y + X
       SWAP A         ;   A:===  10*X + Y
       ADD A, ACC     ;   2 * (10*X+Y)
       DA A
       JNC $+4
         INC R7
         INC R7
       ADD A, R4      ;   2 * (10*X+Y) + 10*Y
       DA A
       JNC $+4
         INC R7
         INC R7
       ADD A, ACC     ; 2*(2*(10*X+Y)+10*Y)
       DA A

       XCH A, R7      ; R7:== *1
       ADDC A, R6     ; (10*Y+X) + X
       DA A
       MOV R5, A      ; R5:== *100
       JNC $+3
         INC R6       ; R6:== *10000.html">10000
;                       R6:R5:R7
;-----------------------------
       MOV A, R2      ; BIT 9, BIT 8, BIT 7 TO BIT 0
       MOV C, B.0
       RRC A
       MOV C, B.1
       RRC A
       MOV B, #25
       DIV AB
       MOV R4, A ; * 100

       MOV A, R2
       ANL A, #3
       XCH A, B
       RL A
       RL A
       ORL A, B
       MOV B, #10
       DIV AB
       SWAP A
       ORL A, B
       
       ADD A, R7
       DA A
       XCH A, R4

       ADDC A, R5
       DA A
       MOV R5, A
       JNC $ + 3
         INC R6
       RET


* - 本貼最后修改時(shí)間:2006-3-31 13:20:11 修改者:dengm

5樓: >>參與討論
dengm
【經(jīng)典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編 (237周期)
;    INPUT:  16 BITS BIN  R3:R2
;    OUTPUT:  BCD IN R6:R5:R4
;    USAGE:  A, PSW, R7
;    STACK: 0 BYTES
      ; R3:R2   ====>R6:R5:R4
   
BIN2BCD:
     CLR A
     MOV R4, A
     MOV R5, A
     MOV R6, A
     MOV A, R3
     SETB F0

BIN2BCD_BYTE:
     MOV R7, #8
BIN2BCD_L1:
       RLC A
       XCH A, R4
       ADDC A, ACC
       DA A
       XCH A, R4
       XCH A, R5
       ADDC A, ACC
       DA A
       XCH A, R5
       XCH A, R6
       ADDC A, ACC
       XCH A, R6
    DJNZ R7, BIN2BCD_L1
    MOV A, R2
    JBC F0, BIN2BCD_BYTE
    RET


* - 本貼最后修改時(shí)間:2006-4-3 17:16:44 修改者:dengm

6樓: >>參與討論
dengm
好象現(xiàn)在已沒(méi)人用匯編了!
 
7樓: >>參與討論
AIRWILL
不錯(cuò),不錯(cuò)
我做的符合 C51 調(diào)用規(guī)則的 itoda(16bit bin 轉(zhuǎn)換為5byte ASCII)子程序
使用了 58Byte, 182 個(gè)clock
看來(lái)是不登大雅之堂了

值得學(xué)習(xí)

8樓: >>參與討論
AIRWILL
dengm 的第三個(gè)程序是否有錯(cuò)誤
看這一段
BIN2BCD_L1:
       RLC A
       XCH A, R4
       ADD A, ACC

是否這里的最后一行應(yīng)該改為
       ADDC A, ACC


9樓: >>參與討論
diannaoza
匯編誰(shuí)說(shuō)沒(méi)人用。
寫的好。我就喜歡匯編。

10樓: >>參與討論
hotpower
最近農(nóng)忙,真想挑戰(zhàn)一把(想起萬(wàn)年歷的那次挑戰(zhàn)---爽)
 
11樓: >>參與討論
diannaoza
【非典】16 bits BIN TO BCD 轉(zhuǎn)換 72周期

最近農(nóng)忙,真想挑戰(zhàn)一把(想起萬(wàn)年歷的那次挑戰(zhàn)---爽)

這么說(shuō)還可以低于72周期完成。

12樓: >>參與討論
AIRWILL
就是啊,c51的編譯還是有些限制的
所以,我也會(huì)做些匯編的子程序來(lái)供c調(diào)用
當(dāng)然是速度和空間上大有優(yōu)勢(shì)的程序

13樓: >>參與討論
dengm
第三個(gè)程序是有錯(cuò)誤, 已改
 
14樓: >>參與討論
dengm
再給2個(gè)版本【非典】算法
【非典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編 (116周期)

;    INPUT:  16 BITS BIN  R3:R2
;    OUTPUT:  BCD IN R6:R5:R4
;    USAGE:  A, PSW, R7
;    STACK: 0 BYTES
      ; R3:R2   ====>R6:R5:R4
   
BIN2BCD:
     MOV A, R3
     MOV B, #25
     DIV AB
     CJNE A, #10, $+5
       MOV A, #10H
     MOV R5, A
     MOV A, R2
     RLC A
     MOV B.6, C
     RLC A
     MOV B.7, C
     MOV R4, A
     MOV A, #10
     XCH A, B
     RL A
     RL A
     DIV AB
     SWAP A
     ORL A, B
     XCH A, R4
     MOV R6, #0

     MOV R7, #6
BIN2BCD_L1:
       RLC A
       XCH A, R4
       ADDC A, ACC
       DA A
       XCH A, R4
       XCH A, R5
       ADDC A, ACC
       DA A
       XCH A, R5
       XCH A, R6
       ADDC A, ACC
       XCH A, R6
    DJNZ R7, BIN2BCD_L1
    RET

【非典】16 bits BIN TO BCD 轉(zhuǎn)換 51匯編 (121周期)
;    INPUT:  16 BITS BIN  R3:R2
;    OUTPUT:  BCD IN R6:R5:R4
;    USAGE:  A, PSW, R7
;    STACK: 0 BYTES
      ; R3:R2   ====>R6:R5:R4
   
BIN2BCD:
     MOV A, R3
     MOV B, #50
     DIV AB
     MOV R5, A
     MOV A, R2
     RLC A
     MOV R4, A
     MOV A, #10
     XCH A, B
     RLC A
     DIV AB
     SWAP A
     ORL A, B
     XCH A, R4
     MOV R6, #0

     MOV R7, #7
BIN2BCD_L1:
       RLC A
       XCH A, R4
       ADDC A, ACC
       DA A
       XCH A, R4
       XCH A, R5
       ADDC A, ACC
       DA A
       XCH A, R5
       XCH A, R6
       ADDC A, ACC
       XCH A, R6
    DJNZ R7, BIN2BCD_L1
    RET


15樓: >>參與討論
yewuyi
?礋狒[……
 
16樓: >>參與討論
dengm
不要?礋狒[
 
17樓: >>參與討論
dengm
16bits格雷碼 to BIN 匯編, 有人要嗎?
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
50HZ正弦波周期統(tǒng)計(jì)程序,值得大家一看
跪地求高手幾個(gè)問(wèn)題
有鉛的芯片和無(wú)鉛的芯片有何區(qū)別?
請(qǐng)推薦能讀取U盤的單片機(jī)!謝謝!
英語(yǔ)、文獻(xiàn)檢索與單片機(jī)
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)