|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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 |
一個(gè)子程序?qū)崿F(xiàn)任意多位BCD碼減法 |
| 作者:lizhi216 欄目:單片機(jī) |
接以前一位同事的工作,發(fā)現(xiàn)一個(gè)六位BCD碼減法程序多達(dá)1XX行(可能沒有優(yōu)化)看得頭都大了,工作中偶然發(fā)現(xiàn)利用一個(gè)兩位BCD碼減法程序可實(shí)現(xiàn)多位BCD碼減法,拿來與大家交流;程序中部分寄存器要自己定義 ;==================================================================== ;兩位BCD碼減法,被減數(shù)R0,減數(shù)R2,差在R0中,第一次需置位MAIN_FLAGREG.7 ;多位相減時(shí)只需按先低位再高位的原則依次相減,每兩位減過后需把差R0放入相應(yīng)的寄存器 ;==================================================================== PROC_BCD_DEC: BTFSC MAIN_FLAGREG,7 ;前一次有借位則將減數(shù)加一 GOTO LB00_BCD_DEC ; MOVLW 001H ; ADDWF R2 ; LB00_BCD_DEC: ; MOVF R2,W ; SUBWF R0 ; BCF R2,7 ; BTFSC STATUS,STATUS_C ; BSF R2,7 ; BSF MAIN_FLAGREG,7 ; BTFSS STATUS,STATUS_C ; BCF MAIN_FLAGREG,7 ;有借位則清零標(biāo)志位 ; BTFSS STATUS,STATUS_DC ;有半借位則減六 GOTO LB01_BCD_DEC ; BTFSS R0,3 ;沒有借位若大于9則減六 GOTO LB02_BCD_DEC ; BTFSC R0,2 ; GOTO LB01_BCD_DEC ; BTFSS R0,1 ; GOTO LB02_BCD_DEC ; LB01_BCD_DEC: ; MOVLW 006H ; SUBWF R0 ; LB02_BCD_DEC: ; BTFSS R2,7 ; GOTO LB03_BCD_DEC ; |
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |