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