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
|