Yarım taşıma bayrak - Half-carry flag
Bir yarım taşıma bayrağı (olarak da bilinen bir yardımcı bayrak veya ondalık ayarlamak bayrak ) 'dir bir durum bayrak bit durum kaydı birçok işlemci gibi ailelerin, Intel 8080 , birZilog Z80 , x86 ve Atmel AVR serisi, arasında diğerleri. Bir zaman işaret taşıma veya ödünç en önemsiz dört bit üzerinden oluşturulan bu akümülatör , bir çalıştırıldıktan sonra kayıt aritmetik talimat. Öncelikle ondalık (kullanılan BCD ) aritmetik talimatlar.
kullanım
Normal olarak, kullanan bir işlemci ikili aritmetik (hemen hemen tüm modern işlemcileri içerir), basit ikili toplama kurallarına göre, iki 8-bit bayt değerleri ekleyecektir. Örneğin, her göze 25 16 ve 48 16 6D üretir 16 . Bununla birlikte, için ikili kodlanmış ondalık her 4 bitlik bir lokma ondalık rakam oluşturulacağı (BCD) değerleri, ekleme daha karmaşıktır. Örneğin, BCD olarak kodlanmış ondalık değer 25 ve 48, ilave 25 değerleri 16 ve 48 16 , iki değer arasında ikili ilavesi 6D üretir 16 . Bu değerin daha düşük bir lokma olmayan ondalık haneli (D) olduğu için, 06 eklenerek ayarlanması gerekir 16 73 doğru BCD sonucu elde etmek için 16 ondalık değer 73 temsil eder.
0010 0101 25 + 0100 1000 48 ----------- 0110 1101 6D, intermediate result + 0110 06, adjustment ----------- 0111 0011 73, adjusted result
Benzer şekilde, BCD ilave değer 39 16 ve 48 16 81 üretir 16 . Bu sonuç olmayan bir ondalık düşük yarım bayt zorunda değildir, ama en önemli basamak (üst dört bit) içine en az önemli basamak (alt dört biti) üzerinden bir taşıma neden olmaz. Bu yarım taşıma bayrağını ayarlayarak CPU ile belirtilir. Bu değer aynı zamanda 06 ekleyerek, düzeltilmelidir 16 81 için 16 87 düzeltilmiş bir BCD sonucu elde etmek için 16 .
0011 1001 39 + 0100 1000 48 ----------- 1000 0001 81, intermediate result + 0110 06, adjustment ----------- 1000 0111 87, adjusted result
Olmayan bir ondalık yüksek basamak bir ekleme, ve ardından 60 Son olarak, 16 değeri eklenmelidir doğru BCD sonucu elde etmek için. Örneğin, 72 ilave 16 ve 73 16 E5 üretir 16 . Bu toplamın en önemli rakam 60 ilave olmayan ondalık (E) olduğu 16. buna 145 düzeltilmiş bir BCD sonuç üretir 16 . (Lider 1 basamak aslında bir olduğunu unutmayın taşıma bit .)
0111 0010 72 + 0111 0011 73 ----------- 1110 0101 E5, intermediate result + 0110 60, adjustment ----------- 1 0100 0101 145, adjusted result
İkili Toplama sonucu yarım taşıma bayrağını ayarlanmasına olmayan bir ondalık düşük rakamı içeriyor veya neden oluyorsa, Özetle, sonuç 06 eklenerek düzeltilmelidir 16 buna; Sonuç olmayan bir ondalık yüksek basamak ihtiva etmesi durumunda, sonuç daha 60 eklenerek düzeltilmelidir 16 doğru final BCD değerinin üretilmesi için.