Conversione binario --> BCD

Questa routine consente di convertire un valore binario compreso tra 0 e 9999 nel formato BCD unpacked. Il valore binario da convertire è contenuto nei due bytes di nome V2 e V1 (con V1 usato come byte meno significativo). Il valore convertito è contenuto nei 4 bytes B4 B3 B2 B1 (con B1 usato come byte meno significativo). La routine usa i registri A e X e altera i valori di V2 e V1.

;--------------------------------------------------
; Effettua la conversione binario -> BCD unpacked
; INPUT:  V2 V1 (2 Bytes con V1 meno significativo)
; OUTPUT: B4 B3 B2 B1 (4 Bytes con B1 meno sign.)
; Vengono usati i registri A e X, i valori di V1 e
; V2 vengono alterati dall'operazione.
;--------------------------------------------------
BINBCD:   CALL DIV100
          CALL DIV10
          LD A,B1
          LD B3,A
          LD A,B2
          LD B4,A
          LD A,V1
          LD X,A
          CALL DIV10
          RET
;--------------------------------------------------
; V2 V1 / 100 ---> X=Quoziente V1=Resto
;--------------------------------------------------
DIV100:   CLR X
DIV100_1: LD A,V1
          SUBI A,100
          LD V1,A
          JRC DIV100_2
          INC X
          JP DIV100_1
DIV100_2: DEC V2
          LD A,V2
          CPI A,255
          JRZ DIV100_3
          INC X
          JP DIV100_1
DIV100_3: LD A,V1
          ADDI A,100
          LD V1,A
          RET
;--------------------------------------------------
; X/10 ---> B2=Quoziente B1=Resto
;--------------------------------------------------
DIV10:    CLR B2
          LD A,X
DIV10_1:  SUBI A,10
          JRC DIV10_2
          INC B2
          JP DIV10_1
DIV10_2:  ADDI A,10
          LD B1,A
          RET


Pagina realizzata da Claudio Fin  -  Ultimo aggiornamento 5-11-1999