Použité SW řešení není zcela standardní, ale je velmi rychlé.
Vstupem je BIN číslo v registrech rii (Hi byte) a ri (Lo byte)
v rozsahu od 0 po 1000D - 03E8H.
Pro převod na DEC potřebujeme zjistit počet obsažených stovek - to jest
vydělit vstupní údaj stovkou. Instrukční sada 8051 však obsahuje pouze
dělení v rozsahu 8 bitů ! Nyní ale stačí, když požijeme fintu, která
spočívá v tom, že číslo 100 lze vyjádřit jako 4*25! Fakticky
tedy vstupní údaj vydělíme 4 (pouze dva binární posuvy doprava – viz.
binární aritmetika) vysledek dělení 4 se vejde do rozsahu 1 byte,
který již vydělíme 25 klasickým postupem instrukcí DIV ab.
Celkový zbytek po dělení obnovíme v opačném pořadí = zbytek po dělení
25 násobíme 4 a připočteme zbytek po dělení 4.
Tento způsob snížení čísla, které dělíme lze použít obecně i ve
složitějších algoritmech..
|
Bin2BCD: mov a,rii ;jed_tisic do Acc rrc a xch a,ri rrc a ;deli 2 xch a,ri rrc a xch a,ri rrc a ;znovu deli 2, dohromady 4 mov f0,C mov b,#25D ;deli 100/4 div ab xch a,ri ;do ri odlozi pocet stovek (BCD) rlc a ;bit 7 ri {puvod. bit 0 rii}do Cy mov a,b ;zbytek do acc rlc a mov C,f0 rlc a mov b,#10D div ab swap a orl a,b ;desitky a jednotky bcd v acc ret |
© DH servis 2002 - |