Příznak polovičního přenosu (, nebo ) je bit v registru příznaků (stavovém slově) mikroprocesorů, který slouží pro podporu výpočtů s binárně kódovanými desítkovými čísly (BCD). Používají jej mimo jiné mikroprocesory Intel 8080, Zilog Z80, řada mikroprocesorů x86 a Motorola 68000. Příznak indikuje, že došlo k přenosu nebo výpůjčce z bitu 3.

Použití

Prakticky všechny moderní procesory používají binární aritmetiku. Při sčítání dvou 8bitových čísel tak používají pravidla pro binární sčítání. Například sečtení 25 a 48 dává 6D. Pro binárně kódované desítkové (BCD) hodnoty, kde každá polovina bytu () reprezentuje jednu desítkovou číslici, je sčítání složitější. Například při sčítání desítkových čísel 25 a 48, která jsou zakódována pomocí BCD hodnot 25 a 48, dává binární sčítání 6D; protože nižší čtyři bity výsledku (D) nejsou desítkovou číslicí, je třeba výsledek upravit přičtením hodnoty 06. Tím získáme správný BCD výsledek 73, který reprezentuje desítkovou hodnotu 73.

0010 0101 25 + 0100 1000 48

0110 1101 6D, binární výsledek + 0110 06, úprava

0111 0011 73, upravený BCD výsledek

Podobně sečtení BCD hodnot 39 a 48 dává 81. Tento výsledek sice nemá ve spodních čtyřech bitech nedesítkovou hodnotu, ale došlo při něm k přenosu z méně významné číslice (nižších čtyř bitů) do významnější číslice (horní čtyři bity), což je indikováno nastavením příznaku polovičního přenosu. Proto i tato hodnota musí být opravena přičtením 06 až 81 pro získání správného BCD výsledku 87.

0011 1001 39 + 0100 1000 48

1000 0001 81, binární výsledek + 0110 06, úprava

1000 0111 87, upravený BCD výsledek

Podobným způsobem se musí postupovat i u vyšší číslice v bytu: pokud sčítání dává nedesítkovou vyšší číslici, musí se k výsledku přičíst 60 pro získání správného BCD výsledku. Například sečtení 72 a 73 dává E5. Protože významnější číslice tohoto součtu není desítková (E), je nutné výsledek opravit přičtením hodnoty 60. Přitom nejvyšší číslice 1 bude uložena do příznaku přenosu.)

0111 0010 72 + 0111 0011 73

1110 0101 E5, binární výsledek + 0110 60, úprava

1 0100 0101 145, upravený BCD výsledek

Shrnuto: jestliže binární sčítání nastaví příznak polovičního přenosu nebo výsledek obsahuje nedesítkovou nižší číslici, výsledek musí být opraven přičtením 06; jestliže binární sčítání nastaví příznak přenosu nebo výsledek obsahuje nedesítkovou vyšší číslici, musí být výsledek opraven přičtením 60. Tyto úpravy provádí instrukce DAA (), kterou je třeba provést po sečtení každé dvojice bytů při výpočtech s binárně kódovanými desítkovými čísly.

Odkazy

Reference

Související články

Binárně kódovaná desítková čísla Příznak přenosu Registr příznaků

Kategorie:Binární aritmetika Kategorie:Počítačová aritmetika