dotaz - BINBCD algoritmus 8051

Zdenek Dvorak zdvorak
Středa Březen 17 11:54:47 CET 2004


hi all,
nasel jsem pri prochazeni HW serveru tenhle genialni algoritmus od
PetraSkalickeho (z knizky Mikroprocesory 8051). Dost jsem nad tim premyslel
a musim priznat, ze mi unika jakym zpusobem to zpracuje napr. hodnotu 16dec.
U 15dec je to jasne, tam to bude sedet, ale 16dec je prece 2*8 a tim padem
na to nebude aplikovat DA korekci a vrati to podle mne 10hex (misto
ocekavanych 16hex). Muze mi neko rict v cem delam chybu?
											dik zdvorak

 ;NICÍ: A, R1, R2, R3, R4, Príznaky
 ;Doba: 24 + 8*13 strojových cyklu
BINBCD:
 MOV  R2,#OH  ; nuluj výsledek
 MOV  R1,#OH
 MOV  R3,A  ; pamet prevádeného císla
 MOV  R4,#8D  ; pocet posunu

CYKL:
 MOV  A,R3
 ADD  A,ACC  ; CY = bit a7
 MOV  R3,A  ; uchovej mezivýsledek
 MOV  A,R1
 ADDC  A,ACC  ; soucet císel R2,R1 +
 DA A   ; dekadická korekce
 MOV  R1,A
 MOV  A,R2
 ADDC  A,ACC
 DA  A
 MOV  R2,A
 DJNZ  R4,CYKL
 MOV  DESJED,R1
 MOV  STOVKY,R2
 RET

;Stazeno z www.HW.cz
;    Autorem tohoto SW je Petr Skalicky - SKALICKY@feld.cvut.cz








Další informace o konferenci Hw-list