BCD i BIN formát čísel hraje v jakémkoli mikropočítači důležitou roli. BCD formát se používá k výpisu na displaye, vstup konstant atd.. BIN formát používá většina výpočetních rutin atd..
Přinášíme vám dva příklady pro převod z BIN do BCD formátu. Obě rutiny se liší algoritmem zpracování problému. První příklad používá dělení 100, zatímco druhý algoritmus Hornerova schématu.
Algoritmus používající dělení :
Podprogram pro převod binárního čísla, uloženého v akumulátoru, na
dekadické číslo v BCD kódu. Výsledné číslo uloženo na paměťová
místa se symbolickými názvy STOVKY a DESJED.
Protože je procesor 8051 vybaven instrukcí dělení, můžeme převod realizovat dělením hodnoty
uložené v akumulátoru hodnotou 100. Celočíselný zbytek z prvního dělení
vydělíme hodnotou 10 a celočíselný zbytek po druhém dělení představuje jednotky
hledaného čísla.
Algoritmy z tohoto příkladu byly zveřejněny v knize Mikroprocesory řady 8051 vydané v BENu.
;NIČÍ: A, B, Příznaky Doba: 18 strojových cyklů BINBCD: ORG 30H DESJED: DS 1H ; paměť desítek (bity 7÷4) a
jednotek (3÷0) ;Stazeno z www.HW.cz |
Zde najdete nejrůznější
výrobky autora tohoto příspěvku..
Algoritmus používající Hornerovo schéma :
Stejný program jako v předchozím příkladě bez použití instrukce dělení a
metody postupného odečítání mocnin základu 10. Není-li procesor
vybaven instrukcí dělení nebo převáděné číslo je dlouhé, pak lze k
zajištění stejného převodu využít algoritmu vycházejícího z
tzv.Hornerova schématu. Každé číslo ve dvojkové soustavě můžeme vyjádřit
výrazem který
vyjadřuje hledané číslo jako postupný součet dvou stejných čísel (.2) s hodnotou
0 nebo 1 ().
Jsou-li dvě čísla v BCD formátu (např.0), potom na jejich součet s přičtením hodnoty 0 nebo 1
může být aplikována instrukce dekadické korekce, která koriguje rozdíl mezi
součtem dekadických čísel v binární sčítačce (v procesoru) a dekadické
sčítačce (přenos do dalšího řádu je generován po dosažení modulu 10).
Navržený algoritmus má proti metodě postupného odečítání mocnin
základu konstantní dobu trvání nezávislou na převáděném
čísle. Při převodu využijeme registry R2 a R1 jako 16 bitový posuvný registr
obsahující na konci algoritmu výsledek, registr R3 jako dočasnou paměť
převáděného čísla a registr R4 jako počitadlo cyklů (posunů).
;NIČÍ: A, R1, R2, R3, R4, Příznaky ;Doba: 24 + 8*13 strojových cyklů BINBCD: CYKL: ;Stazeno z www.HW.cz |
Zde najdete nejrůznější
výrobky autora tohoto příspěvku..
DOWNLOAD rutin v .ZIP souboru