اقرأ في هذا المقال
يحتوي المعالج الدقيق (8086) على سجل علم (16) بت من بينها (9) بت نشطة، الغرض من سجل (FLAGS) هو الإشارة إلى حالة المعالج، يقوم بذلك عن طريق تعيين البتات الفردية التي تسمّى الأعلام، هناك نوعان من الأعلام: أعلام الحالة و أعلام التحكم، تعكس حالة (FLAGS) نتيجة عملية نفذها المعالج، يقوم عنصر التحكم (FLAGS) بتمكين أو تعطيل عمليات معينة للمعالج.
ما هو سجل العلم للمعالج الدقيق 8086
سجل العلم هو سجل للأغراض الخاصة (Special Purpose Register)، وبالتالي، اعتمادًا على قيمة النتيجة بعد أي عملية حسابية أو منطقية، يتم تعيين بتات سجل العلم (1) أو إعادة تعيينها (0)، إنّه سجل (16) بت مع كل بت يقابل (flip-flop)، يغير حالته وفقًا للإخراج المخزن في المجمع (accumulator)، يمكن للعلم التحكم في بعض عمليات وحدة المعالجة (EU)، يوجد إجمالًا (9) أعلام في عام المعالج الدقيق (8086) ويتم تقسيم سجل العلم إلى نوعين وهما:
- أعلام الحالة (Status Flags).
- أعلام التحكم (Control Flags).
أعلام الحالة Status Flags
هناك (6) سجلات علم في المعالج الدقيق (8086) والتي تمّ ضبطها (1) أو إعادة تعيينها (0) اعتمادًا على الحالة بعد عملية (8) بت أو (16) بت، هذه العلامات هي إشارات شرطية / حالة (conditional/status)، (5) من هذه الأعلام هي نفسها كما في المعالج الدقيق (8085)، وعملهم هو نفسه كما في المعالج الدقيق (8085)، السادس هو علم الفائض (overflow flag)، أعلام الحالة (status flags) الستة هي:
علم الإشارة Sign Flag (S)
بعد أي عملية إذا كان (MSB) هو (1)، فإنّه يشير إلى أنّ الرقم سالب، وهذا العلم يصبح معين (set) على (1).
العلم الصفري Zero Flag (Z)
إذا كان إجمالي السجل صفرًا، فسيتم عندها تعيين (set) العلم الصفري فقط.
علم الحمل الإضافي Auxiliary Cary Flag (AC)
عندما تولد بعض العمليات الحسابية حمل بعد النصف السفلي وترسله إلى النصف العلوي، سيتم تعيين علم الحمل الإضافي إلى (1).
علم التكافؤ Parity Flag (P)
هذا هو علم التكافؤ الزوجي (even parity flag)، عندما يكون للنتيجة رقم زوجي (1)، سيتم تعيينه على (1)، وإلّا (0) للرقم الفردي.
علم الحمل Carry Flag (CY)
هذا هو علم الحمل، إذا كانت بعض العمليات تولد حمل بعد العملية، يتم تعيين هذا العلم على (1).
علم الفائض Overflow Flag (O)
سيتم تعيين هذا العلم (1) إذا كانت نتيجة العملية الموقعة كبيرة جدًا بحيث لا تتناسب مع عدد وحدات البت المتاحة لتمثيلها، وإلا تقوم بإعادة تعيين (0)، بعد أي عملية، إذا كان (D [6]) يولد أي حمل ويمر إلى (D [7]) أو إذا لم يولد (D [6]) حملًا فإنّ (D [7]) يولد، يتم تعيين علم الفائض، أي (set) (1)، إذا كان (D [6] وD [7]) كلاهما يولدان حملًا أو كلاهما لا يولدان أي حمل، ثم يتم إعادة تعيين علم الفائض، أي (reset) (0).
مثال
عند إضافة (100 + 50) بايت “النتيجة ليست في النطاق (-128… 127)”، لذلك سيتم تعيين (set) علم الفائض (overflow).
MOV AL, 50 (50 is 01010000 which is positive)
MOV BL, 32 (32 is 00110010 which is positive)
ADD AL, BL (82 is 10000010 which is negative)
تمّ تعيين علم (Overflow) حيث أضفنا (2 +) (2 +ve) أرقام وحصلنا على رقم (-ve).
أعلام التحكم Control Flags
تعمل أعلام التحكم على تمكين أو تعطيل عمليات معينة للمعالج الدقيق، هناك (3) أعلام تحكم في المعالج الدقيق (8086) وهذه هي:
العلم الاتجاهي Directional Flag (D)
يستخدم هذا العلم تحديدًا في تعليمات السلسلة (string instructions)، إذا تمّ تعيين علم الاتجاه (1)، فهذا يعني قم بالوصول إلى بيانات السلسلة من موقع ذاكرة أعلى باتجاه موقع الذاكرة السفلي، إذا تمت إعادة تعيين علامة الاتجاه (0)، فهذا يعني قم بالوصول إلى بيانات السلسلة من موقع الذاكرة السفلي باتجاه موقع الذاكرة الأعلى.
علم المقاطعة Interrupt Flag (I)
إذا تمّ تعيين علم المقاطعة (1)، فسيتعرف المعالج الدقيق على طلبات المقاطعة من الأجهزة الطرفية (peripherals)، إذا تمت إعادة تعيين علم المقاطعة (0)، فلن يتعرف المعالج الدقيق على أي طلبات مقاطعة وسوف يتجاهلها.
علم المصيدة Trap Flag (T)
يستخدم هذا العلم لتصحيح الأخطاء على الشريحة، يؤدي إعداد علم المصيدة إلى وضع المعالج الدقيق في وضع خطوة واحدة لتصحيح الأخطاء، في خطوة واحدة (single stepping)، يقوم المعالج الدقيق بتنفيذ التعليمات ويدخل في خطوة واحدة (ISR).
إذا تمّ تعيين علم المصيدة (trap flag) إلى (1)، تقوم وحدة المعالجة المركزية (CPU) تلقائيًا بإنشاء مقاطعة داخلية بعد كل تعليمة (instruction)، ممّا يسمح بفحص البرنامج أثناء تنفيذ التعليمات حسب التعليمات، إذا تمّ إعادة تعيين علم المصيدة (0)، فلن يتم تنفيذ أي وظيفة.