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.

Ayrıca bakınız

Referanslar