اقرأ في هذا المقال
المقاطعة هي طريقة إنشاء توقف مؤقت أثناء تنفيذ البرنامج وتسمح للأجهزة الطرفية بالوصول إلى المعالج الدقيق، يستجيب المعالج الدقيق لهذا المقاطعة باستخدام (ISR – Interrupt Service Routine)، وهو برنامج قصير لإرشاد المعالج الدقيق حول كيفية التعامل مع المقاطعة.
ما هي المقاطعة في المعالج الدقيق 8086 Interrupt؟
المقاطعة هي حالة توقف المعالج الدقيق مؤقتًا عن العمل في مهمة مختلفة ثمّ العودة إلى مهمته السابقة، المقاطعة هي حدث أو إشارة تتطلب انتباه وحدة المعالجة المركزية (CPU)، يسمح هذا التوقف للأجهزة الطرفية بالوصول إلى المعالج الدقيق، عند حدوث مقاطعة، يكمل المعالج تنفيذ التعليمات الحالية ويبدأ في تنفيذ روتين خدمة المقاطعة (ISR) أو معالجة المقاطعة (Interrupt Handler)، (ISR) هو برنامج يخبر المعالج بما يجب القيام به عند حدوث المقاطعة، بعد تنفيذ (ISR)، تعود السيطرة إلى الروتين الرئيسي حيث تمت مقاطعتها.
ما هي المهام التي يقوم بها المعالج الدقيق 8086 عندما يواجه مقاطعة؟
في المعالج الدقيق (8086) يتم تنفيذ المهام التالية عندما يواجه المعالج الدقيق مقاطعة:
- يتم دفع قيمة سجل العلم (flag register) في المكدس (stack)، هذا يعني أنّ قيمة (SP (Stack Pointer))، يتم تقليلها أولاً بمقدار (2) ثمّ يتم دفع قيمة سجل العلم إلى عنوان ذاكرة مقطع المكدس.
- يتم دفع قيمة عنوان ذاكرة البداية لـ (CS) (Code Segment) في المكدس.
- يتم دفع قيمة (IP) (Instruction Pointer) “مؤشر التعليمات” إلى المكدس.
- يتم تحميل (IP) من موقع الكلمة (word location) “نوع المقاطعة” ((Interrupt type) * 04).
- يتم تحميل (CS) من موقع الكلمة التالية.
- تتم إعادة تعيين علم المقاطعة والملاءمة (Interrupt and Trap flag) إلى (0).
أنواع المقاطعات في المعالج الدقيق 8086:
يتم إعطاء الأنواع المختلفة من المقاطعات الموجودة في المعالج الدقيق (8086)، كالتالي:
مقاطعات الأجهزة Hardware Interrupts:
مقاطعات الأجهزة هي تلك المقاطعات التي يسببها أي جهاز طرفي عن طريق إرسال إشارة عبر دبوس محدد إلى المعالج الدقيق، هناك نوعان من مقاطعات الأجهزة في المعالج الدقيق (8086)، وهي:
- مقاطعة غير قابلة للإخفاء (NMI) (Non Maskable Interrupt): عبارة عن مقاطعة جهاز غير قابلة للإخفاء ذات طرف واحد ولا يمكن تعطيلها، إنّها المقاطعة ذات الأولوية القصوى في المعالج الدقيق (8086)، بعد تنفيذها، تقوم هذه المقاطعة بإنشاء مقاطعة (TYPE 2)، يتم تحميل (IP) من موقع الكلمة (00008 H) ويتم تحميل (CS) من موقع الكلمة (0000A H).
- طلب المقاطعة (INTR) (Interrupt Request): يوفر طلب مقاطعة واحد ويتم تنشيطه بواسطة منفذ الإدخال / الإخراج، يمكن إخفاء هذه المقاطعة أو تأخيرها، إنّه مستوى المقاطعة (level triggered interrupt)، يمكن أن يتلقى أي نوع من أنواع المقاطعة، لذلك ستتغير قيمة (IP وCS) على نوع المقاطعة المستلم.
المقاطعات البرمجية Software Interrupts:
هذه هي الإرشادات التي يتم إدراجها داخل البرنامج لإنشاء المقاطعات، يوجد (256) مقاطعة برمجية في المعالج الدقيق (8086)، التعليمات هي من النوع (INT) للتنسيق حيث يتراوح النوع من (00) إلى (FF)، يتراوح عنوان البداية من (00000 H) إلى (003FF H)، هذه هي تعليمات (2) بايت، يتم تحميل (IP من النوع * 04 H)، ويتم تحميل (CS) من العنوان التالي المعطى بواسطة ((type * 04) + 02 H)، بعض المقاطعات المهمة للبرامج هي:
- النوع (0) (TYPE 0) يقابل القسمة على صفر (0).
- يستخدم النوع (1) (TYPE 1) لتنفيذ خطوة واحدة لتصحيح أخطاء البرنامج.
- النوع (2) (TYPE 2) يمثل (NMI) ويستخدم في حالات انقطاع التيار الكهربائي.
- النوع (3) (TYPE 3) يمثل مقاطعة نقطة الانقطاع (break-point interrupt).
- النوع (4) (TYPE 4) هو مقاطعة الفائض (overflow interrupt).
المقاطعات من النوع (5) إلى النوع (31) محجوزة للمعالجات الدقيقة المتقدمة الأخرى، والمقاطعات من (32) إلى النوع (255) متاحة لمقاطعات الأجهزة والبرمجيات.
تعليمات المقاطعة ثلاثية نقاط التوقف INT 3-Break Point Interrupt Instruction:
إنّها تعليمات من (1) بايت لها كود المرجع هو (CCH)، يتم إدخال هذه التعليمات في البرنامج بحيث عندما يصل المعالج إلى هناك، فإنّه يتوقف عن التنفيذ العادي للبرنامج ويتبع إجراء نقطة التوقف، يشمل تنفيذه الخطوات التالية:
- يتم دفع قيمة سجل العلم (Flag register) إلى المكدس (stack).
- يتم دفع قيمة (FS) لعنوان الإرجاع وقيمة (IP) لعنوان الإرجاع إلى المكدس.
- يتم تحميل (IP) من محتويات كلمة (location 3 × 4 = 0000CH).
- يتم تحميل (CS) من محتويات موقع الكلمة التالية.
- تتم إعادة تعيين علم المقاطعة (Interrupt Flag) وعلم الملاءمة (Trap Flag) إلى (0).
مقاطعة تعليمات الفائض INTO – Interrupt on overflow instruction:
يُعرف عمومًا باسم تعليمات (1) بايت و(INTO) الخاص بهم، كود المرجع لهذه التعليمات هو (CEH)، كما يوحي الاسم، فهي عبارة عن تعليمات مقاطعة مشروطة، أي يتحقق من حالة تجاوز سعة علامة (OF) في السجل ويستدعي معالج المقاطعة عندما يتم تعيين علامة تجاوز السعة على (1) ويتفرع إلى معالج المقاطعة الذي يكون رقم نوع المقاطعة الخاص به هو (4)، إذا كان يتم إعادة تعيين علامة (overflow) مرة أخرى، ثمّ يستمر التنفيذ إلى التعليمات التالية، يشمل تنفيذه الخطوات التالية:
- يتم دفع قيم سجل العلم (Flag register) إلى المكدس.
- يتم دفع قيمة (CS) لعنوان الإرجاع وقيمة (IP) لعنوان الإرجاع إلى المكدس.
- يتم تحميل (IP) من محتويات موقع الكلمة (4 × 4 = 00010H).
- يتم تحميل (CS) من محتويات موقع الكلمة التالية.
- تتم إعادة تعيين علم المقاطعة (Interrupt Flag) وعلم الملاءمة (Trap flag) إلى (0).