INT (تعليمات x86)

INT هي تعليمة في لغة التجميع لمعالجات x86 تقوم بتوليد مقاطعة برمجية . تأخذ رقم المقاطعة مُنسقًا كقيمة بايت . [ 1 ]

عند كتابة التعليمات بلغة التجميع، تُكتب على النحو التالي:

INT X

أين Xيوجد مقاطعة البرنامج التي يجب توليدها (0-255).

كما هو معتاد في الحساب الثنائي للآلات، تُكتب أرقام المقاطعات غالبًا بالصيغة الست عشرية ، والتي يمكن الإشارة إليها بالبادئة 0x أو باللاحقة h . على سبيل المثال، INT 13Hسيؤدي ذلك إلى توليد المقاطعة البرمجية رقم 20 (القيمة الست عشرية 0x13 تساوي 19 في الصيغة العشرية؛ ويبدأ العد من 0)، مما يتسبب في تنفيذ الدالة التي يشير إليها المتجه رقم 20 في جدول المقاطعات .

تُستخدم INT على نطاق واسع في الوضع الحقيقي . أما في الوضع المحمي ، فتُعتبر INT تعليمة ذات امتيازات . [ 1 ]

الوضع الحقيقي

المقاطعة البرمجية هي استدعاء طويل يحفظ حالة المعالج. لكل مقاطعة رقم مقاطعة مكون من 8 بتات. يُستخدم هذا الرقم للبحث عن مقطع:إزاحة في جدول متجه المقاطعة المكون من 256 عنصرًا والمخزن في العناوين من 0 إلى 3FFH. عند مصادفة مقاطعة برمجية في الوضع الحقيقي ، تُدفع حالة المعالج، ويُدفع كل من CS وIP، ويُضرب رقم المقاطعة في أربعة لتحديد عنوان تنفيذ جديد يُحمّل من جدول المتجهات. من الممكن تمامًا استخدام تعليمة استدعاء بعيد لبدء وظيفة المقاطعة يدويًا بعد دفع سجل العلم. تنتهي إجراءات المقاطعة عادةً بتعليمات IRET.

من الأمثلة على مقاطعات برامج DOS المفيدة المقاطعة 0x21. من خلال استدعائها بمعاملات مختلفة في السجلات (غالباً ah و al)، يمكنك الوصول إلى عمليات إدخال/إخراج متنوعة، وإخراج السلاسل النصية، وغير ذلك. [ 2 ]

لا تستخدم معظم أنظمة يونكس ومشتقاتها المقاطعات البرمجية ، باستثناء المقاطعة 0x80، التي كانت تُستخدم لإجراء استدعاءات النظام قبل منتصف العقد الأول من الألفية الثانية. ويتم ذلك عن طريق إدخال قيمة 32 بت تُطابق دالة النواة في سجل EAX الخاص بالمعالج، ثم تنفيذ المقاطعة 0x80.

INT3

تعليمة INT3  هي تعليمة من بايت واحد مُعرَّفة لاستخدامها من قِبل أدوات تصحيح الأخطاء لاستبدال تعليمة مؤقتًا في برنامج قيد التشغيل بهدف تعيين نقطة توقف . أما تعليمة INT  XXh الأكثر عمومية، فتُشفَّر باستخدام بايتين. وهذا يجعلها غير مناسبة للاستخدام في تعليمات التصحيح (التي قد يكون طولها بايتًا واحدًا)؛ انظر SIGTRAP .

رمز العملية للعدد INT3 هو 0xCC، على عكس رمز العملية للعدد INT immediate8 ، وهو . ولأن رمز العملية المخصص له خصائص خاصة مرغوبة لأغراض تصحيح الأخطاء، لا يشترك فيها رمز العملية العادي المكون من بايتين للعدد INT3، فإن المجمعات لا تُنشئ عادةً رمز العملية العام من الرموز المختصرة. [ 1 ]0xCD immediate80xCC0xCD 0x03

داخل

تعليمة INTO  هي تعليمة أخرى تتكون من بايت واحد. وهي مقاطعة شرطية يتم تفعيلها عند ضبط علامة تجاوز السعة أثناء تنفيذ هذه التعليمات البرمجية. وهذا يشير ضمنيًا إلى المقاطعة رقم 4.

رمز العملية INTO هو 0xCE، ولكنه غير متوفر في وضع x86-64.

INT1

تُعرّف تعليمة INT1  على أنها تعليمة من بايت واحد تُستخدم كأداة لتصحيح أخطاء الأجهزة.

رمز العملية للوحدة INT1 هو 0xF1، على عكس رمز العملية للوحدة INT1، وهو 0xCD 0x01. تُولّد الوحدة INT1 استثناء تصحيح الأخطاء (#DB) دون ضبط أي بتات في سجل DR6. قد يستخدم مُصنّعو الأجهزة تعليمة INT1 لتصحيح أخطاء الأجهزة. توصي إنتل مُصنّعي البرامج بالاستمرار في استخدام تعليمة INT3 لنقاط توقف البرامج. [ 1 ] لم تُطبّق هذه التعليمة في المعالجات التي سبقت معالج 80386.

انظر أيضاً

مراجع

  1. 1 2 3 4 دليل مطوري البرامج لبنيتي Intel® 64 و IA-32 (ملف PDF) . المجلد 2. شركة Intel . مارس 2024. ص 3-520 . تاريخ الاطلاع: 23 مايو 2024 .  
  2. تعريف: int 21