علم نصف الحمل

تُعدّ علامة نصف الحمل (المعروفة أيضًا بالعلامة المساعدة ) بتًا شرطيًا في سجل الحالة للعديد من عائلات المعالجات المركزية ، مثل Intel 8080 و Zilog Z80 و x86 [ 1 ] وسلسلة Atmel AVR ، وغيرها. وتشير هذه العلامة إلى حدوث حمل أو استعارة من أقل أربع بتات أهمية في سجل المُراكم بعد تنفيذ تعليمة حسابية . وتُستخدم بشكل أساسي في تعليمات الحساب العشري ( BCD ).

الاستخدام

عادةً، يقوم المعالج الذي يستخدم الحساب الثنائي (والذي يشمل معظم وحدات المعالجة المركزية الحديثة) بجمع قيمتين من 8 بت وفقًا لقواعد الجمع الثنائي البسيط. على سبيل المثال، ينتج عن جمع 25 و48 القيمة 6D . أما بالنسبة للقيم العشرية المشفرة ثنائيًا (BCD)، حيث يمثل كل نصف بت رقمًا عشريًا، فإن عملية الجمع أكثر تعقيدًا. على سبيل المثال، عند جمع القيمتين العشريتين 25 و48، المشفرتين كقيم BCD 25 و48، ينتج عن الجمع الثنائي للقيمتين القيمة 6D . ولأن النصف السفلي من هذه القيمة ليس رقمًا عشريًا (D)، يجب تعديله بإضافة 06 للحصول على نتيجة BCD الصحيحة وهي 73 ، والتي تمثل القيمة العشرية 73.

 0010 0101 25 + 0100 1000 48 -----------  0110 1101 6D ، نتيجة وسيطة + 0110 06، تعديل -----------  0111 0011 73 ، النتيجة المعدلة

وبالمثل، ينتج عن جمع قيم BCD 39 16 و48 16 القيمة 81 16. لا تحتوي هذه النتيجة على نصف بت غير عشري، ولكنها تتسبب في نقل الرقم الأقل أهمية (الأربع بتات السفلى) إلى الرقم الأكثر أهمية (الأربع بتات العليا). ويُشار إلى ذلك بتفعيل وحدة المعالجة المركزية لعلامة نصف النقل. يجب تصحيح هذه القيمة أيضًا، وذلك بإضافة 06 16 إلى 81 16 للحصول على نتيجة BCD مصححة هي 87 16 .

 0011 1001 39 + 0100 1000 48 -----------  1000 0001 81 ، نتيجة وسيطة + 0110 06، تعديل -----------  1000 0111 87 ، النتيجة المعدلة

أخيرًا، إذا نتج عن عملية الجمع رقمٌ أعلى غير عشري، فيجب إضافة 60 16 إلى القيمة للحصول على نتيجة BCD الصحيحة. على سبيل المثال، ينتج عن جمع 72 16 و73 16 القيمة E5 16. وبما أن الرقم الأكثر أهمية في هذا المجموع غير عشري (E)، فإن إضافة 60 16 إليه ينتج عنه نتيجة BCD مصححة هي 145 16. (لاحظ أن الرقم 1 في البداية هو في الواقع بتّ الحمل ).

 0111 0010 72 + 0111 0011 73 -----------  1110 0101 E5 ، نتيجة وسيطة + 0110 60، تعديل ----------- 1 0100 0101 145 ، النتيجة المعدلة

باختصار، إذا كانت نتيجة عملية الجمع الثنائي تحتوي على رقم منخفض غير عشري أو تسببت في ضبط علامة نصف الحمل، فيجب تصحيح النتيجة بإضافة 06 16 إليها؛ وإذا كانت النتيجة تحتوي على رقم عالٍ غير عشري، فيجب تصحيح النتيجة بشكل أكبر بإضافة 60 16 لإنتاج قيمة BCD النهائية الصحيحة.

علم الحمل الإضافي في x86

يُعدّ علم الحمل الإضافي (AF) علمًا خاصًا بوحدة المعالجة المركزية (CPU) في سجل FLAGS لجميع وحدات المعالجة المركزية المتوافقة مع معمارية x86 ، [ 2 ] وعائلة 8080 السابقة . وقد أطلقت عليه شركة إنتل أحيانًا اسم علم التعديل. [ 3 ] يقع بت العلم في الموضع 4 في سجل أعلام وحدة المعالجة المركزية. ويشير إلى وقت توليد عملية حمل أو استعارة حسابية من البتات الأربعة الأقل أهمية، أو النصف السفلي من البايت. ويُستخدم بشكل أساسي لدعم العمليات الحسابية العشرية المشفرة ثنائيًا (BCD). 

يتم ضبط علامة الحمل الإضافي (إلى 1) إذا حدث حمل من النصف السفلي (أقل أربعة بتات) إلى النصف العلوي (أعلى أربعة بتات) أثناء عملية الجمع ، أو استعارة من النصف العلوي إلى النصف السفلي، في الجزء ذي الثمانية بتات الأدنى، أثناء عملية الطرح. وإلا، إذا لم يحدث أي حمل أو استعارة، يتم مسح العلامة. [ 4 ]

انظر أيضاً

مراجع

  1. "دليل مطوري برامج معمارية إنتل، المجلد 2: دليل مرجعي لمجموعة التعليمات" (ملف PDF) . تم الاطلاع عليه بتاريخ 29-05-2013 .
  2. دليل مطوري البرامج لهندسة Intel 64 و IA-32، المجلد 1. ديسمبر 2022. ص 3-16. 
  3. دليل مطوري عائلة Pentium Pro: المجلد 2 (PDF) . يناير 1996. ص 3-11. 
  4. "دليل مستخدم عائلة 8086" (ملف PDF) . إنتل. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 27 سبتمبر 2020. تم الاطلاع عليه بتاريخ 2 يوليو 2020 .