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.

Viz také

Reference