Prevod 24-bit BIN do BCD asm

Omlouvám se, špatně sem si přečetl dotaz, ale aspoň je vidět, že když je člověk po noční a nespal celej den, že má jít radši spát.¨

Já používám toto, je to předělané na 18F, ale stačí upravit FSR a INDF podle řady PIC

;************************************************************************** ; Prevod 24 \ na DEC ; vstup C3,2,1 ; pouziva FSR2, C1,C2,C3,TMP1,D1,D2 ; vystup dec0 - 7 ;************************************************************************** BIN2dec lfsr 2,dec0 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 clrf POSTINC2 movlw .24 ; Initiate bit loop banksel D1 movwf D1 BITLOOP banksel C1 rlcf C1, F ; Every iteration of this loop will copy the next rlcf C2, F ; bit of the bin value, starting with the MSB, rlcf C3, F ; to the carry flag lfsr 2,dec0 movlw .8 movwf D2 ; The following is executed 8 times per bit movff STATUS,TMP1 decLOOP banksel 0 movff TMP1,STATUS rlcf INDF2, F ; Multiply decn by two with carry, decn * 2 + C movlw .246 ; See note above - test for decn > 9 addwf INDF2, W ; W = decn -10, if W = positive or zero, C = 1 btfsc STATUS, C ; decn has overflowed (>>9) if carry is set movwf INDF2 ; If carry is set decn = decn - 10 movff STATUS,TMP1 incf FSR2L, F ; Carry is CARRIED over to next multiply banksel D2 decfsz D2, F goto decLOOP ; Multiply next decn decfsz D1, F goto BITLOOP ; Do next bit retlw 0 ; Could be RETURN on most pics