converisón de Word a BCD

hola amigos quisiera que me ayuden con este código que encontré para convertir 16 bit a BCD pero no se para que micro está diseñado y yo necesito implementarlo en un PIC18F4550 alguien me puede dar una mano?

Word2BCD:
mov [D+0], A; 5/2 D[0] = 16n1 + n0
asr A; 4/1
and A, 78h; 4/2 A = 8n1
sub [D+0], A; 7/2 D[0] = 8n1 + n0
asr A; 4/1 A = 4n1
asr A; 4/1 A = 2n1
sub [D+0], A;7/2 D[0] = 6n1 + n0
asr A; 4/1 A = n1
mov [D+1], A;5/2 D[1] = n1
;___________________________Result 44/14
mov A, X; 4/1 A = 16n3 + n2
asr A; 4/1
and A, 78h; 4/2 A = 8n3
add [D+1], A;7/2 D[1] = 8n3 + n1
asr A; 4/2 A = 4n3
mov [D+3], A;5/2 D[3] = 4n3
add [D+0], A;7/2 D[0] = 4n3 + 6n1 + n0
asr A; 4/2 A = 2n3
add [D+0], A;7/2 D[0] = 6n3 + 6n1 + n0
asr A; 4/2 A = n3
add [D+1], A;7/2 D[1] = 9n3 + n1
;____________________________Result 57/20
mov A, X; 4/1 A = 16n3 + n2
and A, 0Fh; 4/2 A = n2
add [D+1], A;7/2 D[1] = 9n3 + n2 + n1
asl A; 4/1 A = 2n2
add [D+0], A;7/2 D[0] = 6n3 + 2n2 + 6n1+n0
mov [D+2], A;5/2 D[2] = 2n2
asl A; 4/1 A = 4n2
add [D+1], A;7/2 D[1] = 9n3 + 5n2 + n1
add [D+0], A;7/2 C:D[0] = 6n3 + 6n2 + 6n1 + n0
mov [D+4], 0;8/3 clear D[4]
mov REG[MUL_X],67h;8/3 prepare to MUL
mov X, -4; 4/2 set index / loop counter
jnc loop; 5/2 skip correction if C==0
;____________________________Result 74/25
add [D+1], 20;9/3 D[1]+20 equ C:D[0] - 200
add [D+0], 56;9/3 D[0] + 56
;____________________________Result 18/06
loop:
mov A, [X+D+4];6/2 copy D to A
rrc A; 4/1 A = D div 2
mov REG[MUL_Y], A; 5/2
mov A, REG[MUL_DH]; 6/2
asr A; 4/1 A = D div 10
add [X+D+5], A;8/2 D[i+1]=D[i+1]+(Ddiv10)
asl A; 4/1 A = 2(D div 10)
sub [X+D+4], A; 8/2 D= D - A
asl A; 4/1 A = 4(D div 10)
asl A; 4/1 A = 8(D div 10)
sub [X+D+4], A;8/2 D= Dmod10-completed
inc X; 4/1 inc index/loop counter
jnz loop; 5/2 repeat 4 times
;____________________Result 70*4 = 280/20
ret; 8/1
; Total Word2BCD: 458(481) cycles / 82 bytes

lo necesito urgentemente les toda ayuda
 
Atrás
Arriba