Vlajka napůl nést - Half-carry flag
Vlajky half-carry (také známý jako pomocný vlajky nebo desetinná upravit vlajky ) je stav příznak bit ve stavovém registru mnoha procesorových rodin, jako je například Intel 8080 , Z80 je x86 a Atmel AVR řady, mezi ostatní. Udává, kdy byl generován přenos nebo výpůjčka z nejméně významných čtyř bitů registru akumulátoru po provedení aritmetické instrukce. Primárně se používá v desítkových ( BCD ) aritmetických pokynech.
Používání
Za normálních okolností procesor, který využívá binární aritmetiku (která zahrnuje téměř všechny moderní CPU), přidá dvě 8bitové bajtové hodnoty podle pravidel jednoduchého binárního přidání. Například přidání 25 16 a 48 16 vytvoří 6D 16 . U binárně kódovaných desetinných hodnot (BCD), kde každý 4bitový nibble představuje desetinnou číslici, je však přidání komplikovanější. Například přidáním desítkové hodnoty 25 a 48, které jsou kódovány jako hodnoty BCD 25 16 a 48 16 , binární přidání dvou hodnot vytvoří 6D 16 . Protože spodní nibble této hodnoty je desítková číslice (D), musí být upravena přidáním 06 16, aby se vytvořil správný výsledek BCD 73 16 , což představuje desítkovou hodnotu 73.
0010 0101 25 + 0100 1000 48 ----------- 0110 1101 6D, intermediate result + 0110 06, adjustment ----------- 0111 0011 73, adjusted result
Podobně přidání hodnot BCD 39 16 a 48 16 vytvoří 81 16 . Tento výsledek nemá desítkové nízké okusování, ale způsobí provedení nejméně významné číslice (dolní čtyři bity) do nejvýznamnější číslice (horní čtyři bity). To je indikováno nastavením CPU na poloviční přenos. Tato hodnota musí být také opravena, přidáním 06 16 až 81 16 k vytvoření opraveného výsledku BCD 87 16 .
0011 1001 39 + 0100 1000 48 ----------- 1000 0001 81, intermediate result + 0110 06, adjustment ----------- 1000 0111 87, adjusted result
Nakonec, pokud je výsledkem sčítání nedesetinná vysoká číslice, musí být k hodnotě přidáno 60 16, aby byl výsledek správný BCD. Například přidání 72 16 a 73 16 vytvoří E5 16 . Protože nejvýznamnější číslice tohoto součtu je desítková (E), přidáním 60 16 k ní se získá opravený výsledek BCD 145 16 . (Všimněte si, že úvodní 1 číslice je ve skutečnosti nosný bit .)
0111 0010 72 + 0111 0011 73 ----------- 1110 0101 E5, intermediate result + 0110 60, adjustment ----------- 1 0100 0101 145, adjusted result
Shrneme-li, pokud výsledek binárního přidání obsahuje desítkovou nízkou číslici nebo způsobí, že bude nastaven příznak polovičního přenosu, musí být výsledek opraven přidáním 06 16 ; pokud výsledek obsahuje desítkovou vysokou číslici, musí být výsledek dále opraven přidáním 60 16, aby byla získána správná konečná hodnota BCD.