التحولات غير المشروطة أساسيات برمجة الأجهزة MP (محاضرة) التحكم في أوامر النقل

  • 10.01.2024

إلى جانب وسائل الحسابات الحسابية، فإن نظام تعليمات المعالجات الدقيقة لديه أيضًا وسائل لتحويل البيانات المنطقية. نعني بالمنطق مثل هذه التحويلات للبيانات، والتي تعتمد على قواعد المنطق الرسمي.

يعمل المنطق الرسمي على مستوى العبارات الصحيحة والخاطئة. بالنسبة للمعالج الدقيق، يعني هذا عادةً 1 و0 على التوالي. يستخدم الكمبيوتر لغة الأصفار والواحدات، ولكن أصغر وحدة من البيانات التي تعمل عليها تعليمات الجهاز هي البايت. ومع ذلك، على مستوى النظام، غالبًا ما يكون من الضروري أن تكون قادرًا على العمل عند مستوى منخفض للغاية - مستوى البت.

أرز. 29. أدوات معالجة البيانات المنطقية


تتضمن وسائل تحويل البيانات المنطقية الأوامر المنطقية والعمليات المنطقية. يمكن أن يكون معامل تعليمات المجمّع عمومًا تعبيرًا، والذي بدوره عبارة عن مزيج من العوامل والمعاملات. من بين هذه العوامل قد يكون هناك أيضًا عوامل تنفذ عمليات منطقية على كائنات التعبير.

قبل فحص هذه الأدوات بالتفصيل، دعونا نفكر في ماهية البيانات المنطقية نفسها وما هي العمليات التي يتم تنفيذها عليها.

البيانات المنطقية

الأساس النظري لمعالجة البيانات المنطقية هو منطق رسمي.هناك عدة أنظمة المنطق. واحدة من أشهرها حساب التفاضل والتكامل المقترح.البيان هو أي بيان يمكن أن يقال لأي منهما حقيقي،أو خطأ شنيع.

حساب التفاضل والتكامل المقترح هو مجموعة من القواعد المستخدمة لتحديد صحة أو كذب مجموعة من العبارات.

يتم دمج حساب التفاضل والتكامل المقترح بشكل متناغم مع مبادئ تشغيل الكمبيوتر والأساليب الأساسية لبرمجته. جميع مكونات أجهزة الكمبيوتر مبنية على شرائح منطقية. يعتمد نظام تمثيل المعلومات في الكمبيوتر عند أدنى مستوى على مفهوم البت. قليلًا، مع وجود حالتين فقط (0 (خطأ) و1 (صحيح))، يتناسب بشكل طبيعي مع حساب التفاضل والتكامل المقترح.

وفقا للنظرية، يمكن تنفيذ العمليات المنطقية التالية على البيانات (على البتات).


1. النفي (المنطقي لا) -عملية منطقية على معامل واحد تكون نتيجته معكوس المعامل الأصلي.

تتميز هذه العملية بشكل فريد بجدول الحقيقة التالي (الجدول 12).

الجدول 12. جدول الحقيقة للنفي المنطقي

2. الإضافة المنطقية (منطقية شاملة أو) -عملية منطقية على معاملين تكون نتيجتها صحيحة (1) إذا كان أحد المعاملين أو كليهما صحيحًا (1)، وخطأ (0) إذا كان كلا المعاملين خطأ (0).

يتم وصف هذه العملية باستخدام جدول الحقيقة التالي (الجدول 13).

الجدول 13. جدول الحقيقة للمنطقية الشاملة OR

3. الضرب المنطقي (المنطقي و) -عملية منطقية على معاملين يتم تقييمها على أنها صحيحة (1) فقط إذا تم تقييم كلا المعاملين على أنها صحيحة (1). وفي جميع الحالات الأخرى، تكون قيمة العملية خاطئة (0).

يتم وصف هذه العملية باستخدام جدول الحقيقة التالي (الجدول 14).

الجدول 14. جدول الحقيقة للمنطق AND

4. الجمع الحصري المنطقي (الحصر المنطقي أو) -عملية منطقية على معاملين تكون نتيجتها صحيحة (1) إذا كان أحد المعاملين فقط صحيحًا (1)، وكاذبة (0) إذا كان كلا المعاملين خطأ (0) أو "حقيقة" (1). يتم وصف هذه العملية باستخدام جدول الحقيقة التالي (الجدول 15).

الجدول 15. جدول الحقيقة للحصر المنطقي OR

ويحتوي نظام تعليمات المعالجات الدقيقة على خمس تعليمات تدعم هذه العمليات. تقوم هذه التعليمات بتنفيذ عمليات منطقية على بتات المعاملات. أبعاد المعاملات، بطبيعة الحال، يجب أن تكون هي نفسها. على سبيل المثال، إذا كان حجم المعاملات كلمة (16 بت)، فسيتم تنفيذ العملية المنطقية أولاً على البتات الصفرية للمعاملات، وتكتب نتيجتها بدلاً من البت 0 من النتيجة. ثم يكرر الأمر هذه الإجراءات بالتسلسل على جميع البتات من الأول إلى الخامس عشر.

الأوامر المنطقية

يحتوي نظام تعليمات المعالجات الدقيقة على مجموعة الأوامر التالية التي تدعم العمل مع البيانات المنطقية:

1) وoperand_1،operand_2 – عملية الضرب المنطقية. ينفذ الأمر عملية AND منطقية للبت (اقتران) على بتات المعاملينoperand_1 وoperand_2. تتم كتابة النتيجة إلىoperand_1؛

2) وoperand_1،operand_2 – عملية إضافة منطقية. ينفذ الأمر عملية OR منطقية للبت (فصل) على بتات المعاملينoperand_1 وoperand_2. تتم كتابة النتيجة إلىoperand_1؛

3) خنزير المعامل_1، المعامل_2 - عملية إضافة منطقية حصرية. تنفذ التعليمات عملية OR منطقية حصرية على بتات المعاملينoperand_1 وoperand_2. تتم كتابة النتيجة بدلاً من المعامل؛

4) اختبار المعامل_1، المعامل_2 – عملية "التحقق" (باستخدام الضرب المنطقي). ينفذ الأمر عملية AND منطقية للبت على بتات المعاملينoperand_1 وoperand_2. تظل حالة المعاملات كما هي، فقط الأعلام zf وsf وpf تتغير، مما يجعل من الممكن تحليل حالة البتات الفردية للمعامل دون تغيير حالتها؛

5) ليس المعامل - عملية النفي المنطقي. ينفذ الأمر انعكاسًا للبت (استبدال القيمة بالقيمة المقابلة) لكل بت من المعامل. يتم كتابة النتيجة بدلا من المعامل.

لفهم دور التعليمات المنطقية في نظام تعليمات المعالجات الدقيقة، من المهم جدًا فهم نطاق تطبيقها والتقنيات النموذجية لاستخدامها في البرمجة.

باستخدام الأوامر المنطقية فمن الممكن توزيعالبتات الفردية في المعامل لغرض الإعداد أو إعادة الضبط أو العكس أو ببساطة التحقق من قيمة معينة.

لتنظيم مثل هذا العمل باستخدام البتات، عادةً ما يلعب معامل_2 دور القناع. وباستخدام البتات المحددة في 1 بت من هذا القناع، يتم تحديد بتات المعامل 1 اللازمة لعملية معينة. دعونا نبين الأوامر المنطقية التي يمكن استخدامها لهذا الغرض:

1) لتعيين بتات معينة على 1، استخدم الأمر ogoperand_1,operand_2.

في هذه التعليمات، يجب أن يحتوي المعامل_2، الذي يعمل كقناع، على بتة واحدة بدلاً من تلك البتات التي يجب ضبطها على 1 في المعامل_1؛

2) لإعادة تعيين بعض البتات إلى 0، استخدم الأمر وoperand_1،operand_2.

في هذه التعليمات، يجب أن يحتوي المعامل_2، الذي يعمل كقناع، على صفر بتات بدلاً من تلك البتات التي يجب تعيينها على 0 في المعامل_1؛

3) يتم تطبيق الأمر hogoperand_1، وoperand_2:

أ) لمعرفة البتات المختلفة في المعامل_1 والمعامل؛

ب) لعكس حالة البتات المحددة في معامل_1.

عند تنفيذ أمر الخنزير، يجب أن تكون أجزاء القناع التي تهمنا (operand_2) واحدة، والباقي يجب أن يكون صفرًا؛

للتحقق من حالة البتات المحددة، استخدم الأمر testoperand_1,operand_2 (تحقق من المعامل_1).

يجب أن تكون قيمة البتات المحددة للمعامل_1 في القناع (المعامل_2) واحدة. يشبه تشغيل أمر الاختبار خوارزمية الأمر والأمر، لكنه لا يغير قيمة المعامل_1. نتيجة الأمر هي تعيين قيمة العلامة الصفرية zf:

1) إذا كانت zf = 0، فإن الضرب المنطقي يؤدي إلى نتيجة صفر، أي وحدة بت واحدة من القناع، والتي لا تتطابق مع البتة المقابلة من المعامل؛

2) إذا كان zf = 1، فإن الضرب المنطقي نتج عنه نتيجة غير الصفر، أي. مرة على الأقلتتطابق البتة الواحدة من القناع مع البتة المقابلة من المعامل_1.

للرد على نتيجة أمر الاختبار، يُنصح باستخدام أمر القفز تسمية jnz (القفز إذا لم يكن صفرًا) - القفز إذا كانت علامة الصفر zf غير صفرية، أو الأمر بالإجراء المعاكس - تسمية jz (القفز إذا كان الصفر) - انتقل إذا كانت علامة الصفر zf = 0.

يبحث الأمران التاليان عن البت الأول من المعامل المعين على 1. يمكنك البحث من بداية المعامل أو نهايته:

1) معامل bsf_1، معامل_2 (مسح البت للأمام) - مسح البتات للأمام. تقوم التعليمات بمسح بتات المعاملات_2 من الأقل أهمية إلى الأكثر أهمية (من البتة 0 إلى البتة الأكثر أهمية) بحثًا عن أول بتة مضبوطة على 1. إذا تم العثور على واحدة، فسيتم إدخال رقم هذه البتة في المعامل_1 كقيمة عددية. إذا كانت جميع بتات المعامل_2 هي 0، فسيتم تعيين علامة الصفر zf على 1، وإلا فسيتم إعادة تعيين علامة zf إلى 0؛

2) bsroperand_1,operand_2 (إعادة ضبط فحص البت) - مسح البتات بترتيب عكسي. تبحث التعليمات (تفحص) بتات المعامل_2 من الأكثر أهمية إلى الأقل أهمية (من البت الأكثر أهمية إلى البت 0) بحثًا عن أول بت تم تعيينه على 1. إذا تم العثور على واحد، فسيتم إدخال رقم هذا البت في المعامل_1 باعتباره قيمة عدد صحيح. من المهم أن يتم حساب موضع البتة الأولى على اليسار بالنسبة إلى البتة 0. إذا كانت جميع بتات المعامل_2 تساوي 0، فسيتم تعيين علامة الصفر zf على 1، وإلا تتم إعادة تعيين علامة zf إلى 0 .

في أحدث نماذج معالجات Intel الدقيقة، ظهرت عدة أوامر أخرى في مجموعة الأوامر المنطقية التي تسمح بالوصول إلى بت واحد محدد من المعامل. يمكن وضع المعامل إما في الذاكرة أو في سجل للأغراض العامة. يتم تحديد موضع البت بواسطة إزاحة البت بالنسبة إلى البت الأقل أهمية في المعامل. يمكن تحديد قيمة الإزاحة إما كقيمة مباشرة أو متضمنة في سجل للأغراض العامة. يمكنك استخدام نتائج الأمرين bsr وbsf كقيمة الإزاحة. تقوم كافة التعليمات بتعيين قيمة البتة المحددة لعلامة CE

1) معامل bt، إزاحة البت (اختبار البت) - التحقق من البت. ينقل الأمر قيمة البت إلى علامة cf؛

2) معامل bts، إزاحة البت (اختبار البت وتعيينه) - التحقق من البت وتعيينه. تقوم التعليمات بنقل قيمة البت إلى علامة CF ثم تقوم بتعيين البت المراد اختباره على 1؛

3) btr تشغيلي، وإزاحة البت (اختبار البت وإعادة ضبطه) - فحص البت وإعادة ضبطه. تقوم التعليمات بنقل قيمة البت إلى علامة CF ثم تقوم بتعيين هذا البت على 0؛

4) معامل btc، إزاحة البت (اختبار البت وتحويله) - التحقق من البت وعكسه. تقوم التعليمات بنقل قيمة البت إلى علامة cf ثم تقوم بعكس قيمة ذلك البت.

أوامر التحول

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

تقوم جميع تعليمات الإزاحة بنقل البتات الموجودة في حقل المعامل إلى اليسار أو اليمين اعتمادًا على كود التشغيل. جميع تعليمات التحول لها نفس البنية - معامل الشرطي، Shift_counter.

عدد البتات المتحولة – Shift_counter –يقع في مكان المعامل الثاني ويمكن تحديده بطريقتين:

1) بشكل ثابت،والذي يتضمن تحديد قيمة ثابتة باستخدام المعامل الفوري؛

2) ديناميكيا،مما يعني تخزين قيمة عداد الإزاحة في سجل cl قبل تنفيذ تعليمات الإزاحة.

بناءً على حجم سجل cl، من الواضح أن قيمة عداد التحول يمكن أن تتراوح من 0 إلى 255. ولكن في الواقع، هذا ليس صحيحًا تمامًا. ولأغراض التحسين، يقبل المعالج الدقيق القيمة فقط خمس بتات الأقل أهميةالعداد، أي أن القيمة تتراوح من 0 إلى 31.

تقوم جميع أوامر Shift بتعيين علامة الحمل cf.

عندما يتم إزاحة البتات إلى ما بعد المعامل، فإنها تصل أولاً إلى علامة الحمل، مما يجعلها مساوية لقيمة البت التالي الذي ينتهي خارج المعامل. يعتمد المكان الذي ستنتقل إليه هذه البتة بعد ذلك على نوع تعليمات التحول وخوارزمية البرنامج.

بناءً على مبدأ التشغيل، يمكن تقسيم أوامر النقل إلى نوعين:

1) أوامر التحول الخطي.

2) أوامر التحول الدوري.

أوامر التحول الخطي

تتضمن الأوامر من هذا النوع أوامر تقوم بإجراء إزاحة وفقًا للخوارزمية التالية:

1) تقوم البتة "المدفوعة" التالية بتعيين علامة CF؛

2) البت الذي تم إدخاله في المعامل من الطرف الآخر له القيمة 0؛

3) عندما يتم إزاحة البت التالي، فإنه ينتقل إلى علامة CF، ويتم فقدان قيمة البت المزاح السابق! تنقسم أوامر النقل الخطي إلى نوعين فرعيين:

1) أوامر التحول الخطي المنطقية؛

2) أوامر الإزاحة الخطية الحسابية.

تتضمن أوامر الإزاحة الخطية المنطقية ما يلي:

1) معامل shl، Shift_counter (Shift Logical Left) - التحول المنطقي إلى اليسار. يتم إزاحة محتويات المعامل إلى اليسار بعدد البتات التي تحددها قيمة Shift_count. على اليمين (في موضع البت الأقل أهمية) يتم إدخال الأصفار؛

2) المعامل shr، Shift_counter (Shift Logical Right) - التحول المنطقي إلى اليمين. يتم إزاحة محتويات المعامل إلى اليمين بعدد البتات التي تحددها قيمة Shift_count. على اليسار (في موضع بت الإشارة الأكثر أهمية) يتم إدخال الأصفار.

ويبين الشكل 30 كيفية عمل هذه الأوامر.

أرز. 30. مخطط تشغيل أوامر التحول المنطقي الخطي


تختلف تعليمات الإزاحة الخطية الحسابية عن تعليمات الإزاحة المنطقية من حيث أنها تعمل بطريقة خاصة على بتة الإشارة الخاصة بالمعامل.

1) سال المعامل، Shift_counter (التحول الحسابي لليسار) - التحول الحسابي إلى اليسار. يتم إزاحة محتويات المعامل إلى اليسار بعدد البتات التي تحددها قيمة Shift_count. على اليمين (في موضع البت الأقل أهمية) توجد أصفار. الأمر sal لا يحفظ الإشارة، بل يضع العلم مع/في حالة تغيير الإشارةبت آخر قابل للسحب. بخلاف ذلك، يكون الأمر sal مشابهًا تمامًا للأمر shl؛

2) معامل سار، Shift_counter (التحول الحسابي لليمين) - التحول الحسابي إلى اليمين. يتم نقل محتويات المعامل إلى اليمين بعدد البتات التي تحددها القيمة Shift_counter.على اليسار، يتم إدخال الأصفار في المعامل. يحفظ الأمر sar الإشارة، ويستعيدها بعد نقل كل بتة تالية.

يوضح الشكل 31 كيفية عمل تعليمات الإزاحة الحسابية الخطية.


أرز. 31. مخطط تشغيل أوامر التحول الحسابي الخطي

تدوير الأوامر

أوامر تدوير الإزاحة هي أوامر تخزن قيم البتات التي يتم إزاحتها. هناك نوعان من أوامر التدوير:

1) أوامر التحول الدوري البسيطة؛

2) أوامر التحول الدوري عبر علامة الحمل cf.

الى الفرق دوري بسيطالتحولات تشمل:

1) معامل رول، Shift_counter (تدوير لليسار) - تحول دوري إلى اليسار. يتم إزاحة محتويات المعامل إلى اليسار حسب عدد البتات التي يحددها المعامل Shift_counter.تتم كتابة البتات التي تم إزاحتها إلى اليسار بنفس المعامل الموجود على اليمين؛

2) معامل يأجوج، Shift_counter (تدوير لليمين) - التحول الدوري إلى اليمين. يتم نقل محتويات المعامل إلى اليمين بعدد البتات التي يحددها المعامل Shift_counter.تتم كتابة البتات التي تم إزاحتها إلى اليمين بنفس المعامل على اليسار.

أرز. 32. مخطط تشغيل أوامر التحول الدوري البسيطة


كما يتبين من الشكل 32، تؤدي تعليمات الإزاحة الدورية البسيطة إجراءً واحدًا مفيدًا أثناء تشغيلها، وهو: لا يتم دفع البتة التي تم إزاحتها دوريًا إلى المعامل من الطرف الآخر فحسب، بل تصبح قيمتها في نفس الوقت هي قيمة علم CE

تدوير الأوامر عبر حمل العلم CFتختلف عن أوامر الإزاحة الدورية البسيطة في أن البت الذي يتم إزاحته لا ينتقل فورًا إلى المعامل من طرفه الآخر، ولكن يتم كتابته أولاً إلى علامة الحمل CE فقط التنفيذ التالي لتعليمة الإزاحة هذه (بافتراض تنفيذها في حلقة) يؤدي إلى وضع البت الذي تم إزاحته مسبقًا في الطرف الآخر من المعامل(الشكل 33).

لأوامر التحول الدوري عبر حمل العلمما يلي مرتبط:

1) معامل rcl، Shift_counter (التدوير من خلال الحمل إلى اليسار) - التحول الدوري إلى اليسار من خلال الحمل.

يتم إزاحة محتويات المعامل إلى اليسار حسب عدد البتات التي يحددها المعامل Shift_counter.تصبح البتات المتحولة بالتناوب قيمة علامة الحمل cf.

2) معامل rcg، Shift_counter (التدوير من خلال الحمل لليمين) - التحول الدوري إلى اليمين من خلال الحمل.

يتم نقل محتويات المعامل إلى اليمين بعدد البتات التي يحددها المعامل Shift_counter.تصبح البتات المتحولة بالتناوب قيمة علامة الحمل CF.

أرز. 33. أوامر التحول الدوري عبر علامة الحمل CF


من الواضح من الشكل 33 أنه عند التبديل عبر علامة الحمل، يظهر عنصر وسيط، وبمساعدته، على وجه الخصوص، من الممكن استبدال البتات التي تم إزاحتها دوريًا، على وجه الخصوص، عدم تطابقتسلسلات البت.

من خلال عدم تطابق تسلسل البتات، نعني الإجراء الذي يسمح لنا بطريقة ما بتحديد واستخراج الأجزاء الضرورية من هذا التسلسل وكتابتها في موقع آخر.

أوامر التحول الإضافية

يحتوي نظام الأوامر لأحدث طرازات معالجات Intel الدقيقة، بدءًا من i80386، على أوامر تحويل إضافية تعمل على توسيع الإمكانيات التي ناقشناها سابقًا. هذه هي أوامر التحول دقة مزدوجة: 1) shldoperand_1،operand_2،shift_counter - الدقة المزدوجة للتحول الأيسر. يقوم الأمر shld بإجراء الاستبدال عن طريق إزاحة بتات المعامل_1 إلى اليسار، وملء بتاته على اليمين بقيم البتات النازحة من المعامل_2 وفقًا للرسم التخطيطي في الشكل. 34. يتم تحديد عدد البتات التي سيتم نقلها حسب القيمة عداد التحول, المعامل_2لم يتغير.


أرز. 34. مخطط الأمر shld


2) معامل shrd_1، ومعامل_2، وshift_counter - التحول الأيمن المزدوج الدقة. تقوم التعليمة بالاستبدال عن طريق إزاحة بتات المعامل_1 إلى اليمين، وملء بتاتها على اليسار بقيم البتات المُزاحة من المعامل_2 وفقًا للرسم البياني في الشكل 35. ويتم تحديد عدد البتات المُزاحة من خلال القيمة عداد التحول,والتي يمكن أن تكون في النطاق 0...31. يمكن تحديد هذه القيمة كمعامل فوري أو متضمنة في سجل cl. معنى المعامل_2لم يتغير.

أرز. 35. مخطط الأمر shrd


كما لاحظنا، تؤدي أوامر shld وshrd تحولات تصل إلى 32 بت، ولكن نظرًا لخصائص تحديد المعاملات وخوارزمية التشغيل، يمكن استخدام هذه الأوامر للعمل مع حقول يصل طولها إلى 64 بت.

2. أوامر نقل التحكم

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

1) غير مشروط -في هذه المرحلة، من الضروري نقل التحكم ليس إلى الأمر التالي، ولكن إلى آخر، والذي يقع على مسافة ما من الأمر الحالي؛

2) الشرط -يتم اتخاذ القرار بشأن الأمر الذي سيتم تنفيذه بعد ذلك بناءً على تحليل بعض الشروط أو البيانات.

البرنامج عبارة عن سلسلة من الأوامر والبيانات التي تشغل قدرًا معينًا من مساحة ذاكرة الوصول العشوائي (RAM). يمكن أن تكون مساحة الذاكرة هذه متجاورة أو مكونة من أجزاء متعددة.

يعرف المعالج الدقيق تعليمات البرنامج التي يجب تنفيذها بعد ذلك من خلال محتويات زوج من السجلات خدمات العملاء:(ه)الملكية الفكرية:

1) cs - سجل رمز المقطع، الذي يحتوي على العنوان الفعلي (الأساسي) لمقطع الكود الحالي؛

2) eip/ip – سجل مؤشر التعليمات، الذي يحتوي على قيمة تمثل إزاحة الذاكرة للتعليمة التالية التي سيتم تنفيذها بالنسبة إلى بداية مقطع التعليمات البرمجية الحالي.

يعتمد السجل المحدد الذي سيتم استخدامه على ما إذا كان وضع العنونة مضبوطًا على use16 أو use32. إذا تم تحديد use 16، فسيتم استخدام ip، وإذا تم تحديد use32، فسيتم استخدام eip.

وبالتالي، فإن تعليمات نقل التحكم تغير محتويات سجلات cs وeip/ip، ونتيجة لذلك يختار المعالج الدقيق ليس أمر البرنامج التالي بالترتيب للتنفيذ، ولكن أمرًا في قسم آخر من البرنامج. تتم إعادة ضبط الناقل الموجود داخل المعالج الدقيق.

بناءً على مبدأ التشغيل، يمكن تقسيم أوامر المعالجات الدقيقة التي تضمن تنظيم التحولات في البرنامج إلى 3 مجموعات:

1. أوامر النقل غير المشروط للسيطرة:

1) أمر القفز غير المشروط؛

2) الأمر لاستدعاء الإجراء والعودة من الإجراء؛

3) أمر استدعاء مقاطعات البرامج والعودة من مقاطعات البرامج.

2. النقل المشروط لأوامر التحكم:

1) أوامر الانتقال بناءً على نتيجة أمر مقارنة الصفحات؛

2) أوامر الانتقال بناءً على حالة علم معين؛

3) أوامر للتنقل عبر محتويات سجل ecx/cx.

3. أوامر التحكم في الدورة:

1) أمر تنظيم دورة باستخدام عداد ecx/cx؛

2) أمر تنظيم دورة مع عداد ecx/cx مع إمكانية الخروج المبكر من الدورة بشرط إضافي.

القفزات غير المشروطة

وقد كشفت المناقشة السابقة عن بعض تفاصيل آلية الانتقال. تعمل تعليمات الانتقال السريع على تعديل سجل مؤشر تعليمات eip/ip وربما سجل مقطع كود cs. ما يجب تعديله بالضبط يعتمد على:

1) على نوع المعامل في أمر القفز غير المشروط (قريب أو بعيد)؛

2) من الإشارة قبل عنوان القفزة (في أمر القفزة) المعدل؛في هذه الحالة، يمكن تحديد موقع عنوان الانتقال نفسه إما مباشرةً في الأمر (الانتقال المباشر)، أو في السجل أو خلية الذاكرة (الانتقال غير المباشر).

المعدليمكن أن تأخذ القيم التالية:

1) بالقرب من ptr - الانتقال المباشر إلى التسمية ضمن مقطع الكود الحالي. يتم تعديل سجل eip/ip فقط (اعتمادًا على النوع المحدد لمقطع التعليمات البرمجية use16 أو use32) بناءً على العنوان (التسمية) المحدد في الأمر أو التعبير باستخدام حرف استخراج القيمة - $;

2) بعيد ptr – الانتقال المباشر إلى تسمية في مقطع كود آخر. يتم تحديد عنوان الانتقال كمعامل فوري أو عنوان (تسمية) ويتكون من محدد 16 بت وإزاحة 16/32 بت، والتي يتم تحميلها في سجلات cs وip/eip، على التوالي؛

3) كلمة ptr - انتقال غير مباشر إلى تسمية ضمن مقطع الكود الحالي. يتم تعديل eip/ip فقط (بواسطة قيمة الإزاحة من الذاكرة على العنوان المحدد في الأمر، أو من السجل). حجم الإزاحة 16 أو 32 بت؛

4) dword ptr – انتقال غير مباشر إلى تسمية في مقطع كود آخر. يتم تعديل كلا السجلين - cs وeip/ip - (بقيمة من الذاكرة - ومن الذاكرة فقط، من السجل). تمثل الكلمة/الكلمة المزدوجة الأولى لهذا العنوان الإزاحة ويتم تحميلها في ip/eip؛ يتم تحميل الكلمة الثانية/الثالثة في CS. jmp أمر القفز غير المشروط

بناء جملة أمر القفز غير المشروط هو jmp [modifier] Jump_address - قفزة غير مشروطة دون تخزين معلومات حول نقطة الإرجاع.

يعد Jump_address إما عنوان تسمية أو عنوان منطقة الذاكرة حيث يوجد مؤشر الانتقال.

في المجمل، يحتوي نظام تعليمات المعالجات الدقيقة على العديد من رموز تعليمات آلة القفز غير المشروطة jmp.

يتم تحديد الاختلافات بينهما من خلال مسافة الانتقال وطريقة تحديد عنوان الهدف. يتراوحيتم تحديد الانتقال حسب موقع المعامل Transition_address.قد يكون هذا العنوان موجودًا في مقطع التعليمات البرمجية الحالي أو في مقطع آخر. في الحالة الأولى، يتم استدعاء الانتقال داخل القطع,أو أحبائهم،في الثانية – متعدد القطاعات,أو بعيدتفترض القفزة داخل المقطع أنه تم تغيير محتويات سجل eip/ip فقط.

هناك ثلاثة خيارات للاستخدام داخل المقطع لأمر jmp:

1) قصير على التوالي.

2) مستقيم.

3) غير مباشر.


إجراءات

تحتوي لغة التجميع على العديد من الأدوات التي تعمل على حل مشكلة تكرار أقسام كود البرنامج. وتشمل هذه:

1) آلية الإجراءات؛

2) مجمع الماكرو.

3) آلية المقاطعة.

الإجراء، الذي يطلق عليه غالبًا روتين فرعي -هذه هي الوحدة الوظيفية الأساسية للتحلل (التقسيم إلى عدة أجزاء) لبعض المهام. الإجراء عبارة عن مجموعة من الأوامر لحل مهمة فرعية محددة وله وسيلة للحصول على التحكم من نقطة استدعاء مهمة ذات مستوى أعلى وإعادة التحكم إلى هذه النقطة.

في أبسط الحالات، قد يتكون البرنامج من إجراء واحد. بمعنى آخر، يمكن تعريف الإجراء على أنه مجموعة من الأوامر منسقة بشكل صحيح، والتي، بمجرد وصفها، يمكن استدعاؤها، إذا لزم الأمر، في أي مكان في البرنامج.

لوصف سلسلة من الأوامر كإجراء، تستخدم لغة التجميع توجيهين: PROC وENDP.

بناء الجملة لوصف الإجراء هو كما يلي (الشكل 36).


أرز. 36. بناء الجملة لوصف الإجراء في البرنامج


من الشكل 36، يمكن ملاحظة أنه في رأس الإجراء (توجيه PROC) مطلوب فقط اسم الإجراء. من بين العدد الكبير من معاملات توجيه PROC، تستحق [المسافة] إشارة خاصة. يمكن أن تأخذ هذه السمة قيمًا قريبة أو بعيدة وتميز إمكانية استدعاء إجراء من مقطع كود آخر. افتراضيًا، يتم تعيين سمة [المسافة] على القيمة القريبة.

يمكن وضع الإجراء في أي مكان في البرنامج، ولكن بطريقة لا تقع عليه السيطرة عن طريق الخطأ. إذا تم إدراج إجراء ببساطة في دفق الأوامر العام، فسوف يدرك المعالج الدقيق أوامر الإجراء كجزء من هذا التدفق، وبالتالي، سيقوم بتنفيذ أوامر الإجراء.

القفزات الشرطية

يحتوي المعالج الدقيق على 18 تعليمات قفز مشروطة. تسمح لك هذه الأوامر بالتحقق من:

1) العلاقة بين المعاملات الموقعة ("أكثر - أقل")؛

2) العلاقة بين المعاملات غير الموقعة ("فوق - أسفل")؛

3) حالات الأعلام الحسابية ZF، SF، CF، OF، PF (لكن ليس AF).

أوامر الانتقال الشرطي لها نفس الصيغة:

jcctransition_label

كما ترون، يبدأ الكود التذكيري لجميع الأوامر بالحرف "j" - من الكلمة القفز(وثب، ارتداد)، ها -يحدد الحالة المحددة التي يتم تحليلها بواسطة الأمر.

بخصوص المعامل تسمية انتقالية,ثم لا يمكن وضع هذه التسمية إلا ضمن مقطع الكود الحالي، ولا يُسمح بنقل التحكم بين المقاطع في التحولات الشرطية. في هذا الصدد، يختفي سؤال المعدل الذي كان موجودا في بناء جملة أوامر القفز غير المشروط. في نماذج المعالجات الدقيقة المبكرة (i8086 وi80186 وi80286)، كان بإمكان تعليمات القفز الشرطي إجراء قفزات قصيرة فقط - مسافة تتراوح من -128 إلى +127 بايت من التعليمات التي تتبع تعليمات القفز الشرطي. بدءًا من طراز المعالجات الدقيقة 80386، تمت إزالة هذا القيد، ولكن، كما ترون، فقط ضمن مقطع التعليمات البرمجية الحالي.

من أجل اتخاذ قرار بشأن مكان نقل السيطرة باستخدام أمر الانتقال المشروط، يجب أولاً إنشاء شرط يتم على أساسه اتخاذ قرار نقل السيطرة.

مصادر مثل هذه الحالة قد تكون:

1) أي أمر يغير حالة العلامات الحسابية؛

2) صفحة أمر المقارنة، التي تقارن قيم معاملين؛

3) حالة سجل ecx/cx.


أمر المقارنة cmp

يحتوي أمر مقارنة الصفحة على مبدأ تشغيل مثير للاهتمام. إنه تمامًا نفس أمر الطرح - المعامل الفرعي،operand_2.

أمر الصفحة، مثل الأمر الفرعي، يطرح المعاملات ويضع العلامات. الشيء الوحيد الذي لا يفعله هو كتابة نتيجة الطرح بدلاً من المعامل الأول.

بناء جملة أمر الصفحة هو عامل الصفحة_1، عامل_2 (مقارنة) - يقارن بين معاملين ويعين العلامات بناءً على نتائج المقارنة.

يمكن تحليل العلامات التي تم تعيينها بواسطة أمر الصفحة باستخدام أوامر فرعية شرطية خاصة. قبل أن ننظر إليها، دعونا نولي القليل من الاهتمام لفن الإستذكار لأوامر القفز الشرطية هذه (الجدول 16). إن فهم التدوين عند تكوين أسماء أوامر الانتقال الشرطي (العنصر الموجود في اسم أمر jcc، الذي حددناه) سيجعل من السهل حفظها ومزيد من الاستخدام العملي.

جدول 16. معنى الاختصارات في اسم أمر jcc
جدول 17. قائمة أوامر الانتقال الشرطي لصفحة الأوامرoperand_1،operand_2

لا تتفاجأ بحقيقة أن قيم العلامة نفسها تتوافق مع عدة رموز تذكيرية مختلفة لأوامر القفز الشرطية (يتم فصلها عن بعضها البعض بشرطة مائلة في الجدول 17). يرجع الاختلاف في الاسم إلى رغبة مصممي المعالجات الدقيقة في تسهيل استخدام تعليمات الانتقال الشرطي مع مجموعات معينة من التعليمات. ولذلك، فإن الأسماء المختلفة تعكس توجهات وظيفية مختلفة. ومع ذلك، فإن حقيقة استجابة هذه الأوامر لنفس العلامات تجعلها متكافئة ومتساوية تمامًا في البرنامج. لذلك، في الجدول 17، لم يتم تجميعهم حسب الاسم، ولكن حسب قيم العلم (الشروط) التي يتفاعلون معها.


تعليمات الفرع المشروط والأعلام

يعكس التدوين التذكيري لبعض أوامر الانتقال الشرطي اسم العلم الذي تعمل عليه، وله البنية التالية: الحرف "j" يأتي أولاً. (القفز،الانتقال)، والثاني هو إما تسمية العلم أو رمز النفي "n"، متبوعًا باسم العلم. يعكس هيكل الفريق هذا غرضه. إذا لم يكن هناك حرف "n"، فسيتم التحقق من حالة العلم، وإذا كانت تساوي 1، فسيتم إجراء الانتقال إلى تسمية الانتقال. إذا كان الحرف "n" موجودًا، فسيتم التحقق من حالة العلم للتأكد من تساويها 0، وإذا نجحت، فسيتم الانتقال إلى علامة الانتقال.

يتم عرض رموز الأوامر وأسماء الأعلام وشروط الانتقال في الجدول 18. ويمكن استخدام هذه الأوامر بعد أي أوامر تغير الأعلام المحددة.

الجدول 18. أوامر وأعلام الانتقال الشرطي

إذا نظرت عن كثب إلى الجدولين 17 و18، يمكنك أن ترى أن العديد من أوامر الانتقال الشرطي فيهما متكافئة، حيث يعتمد كلاهما على تحليل نفس العلامات.


تعليمات القفز الشرطي وسجل ecx/cx

تتضمن بنية المعالج الدقيق الاستخدام المحدد للعديد من السجلات. على سبيل المثال، يتم استخدام السجل EAX/AX/AL كمراكم، ويتم استخدام سجلات BP وSP للعمل مع المكدس. يحتوي سجل ESH/CX أيضًا على غرض وظيفي محدد: فهو يؤدي هذا الدور عدادفي أوامر التحكم في الحلقة وعند العمل مع سلاسل الأحرف. من الممكن وظيفيًا أن يتم تصنيف أمر الانتقال الشرطي المرتبط بسجل ecx/cx بشكل صحيح على أنه مجموعة الأوامر هذه.

بناء جملة أمر الفرع الشرطي هذا هو:

1) jcxz Jump_label (اقفز إذا كان ex يساوي صفرًا) - اقفز إذا كان cx يساوي صفرًا؛

2) jecxz Jump_label (القفز المتساوي exx Zero) - القفز إذا كان exx يساوي صفرًا.

تعتبر هذه الأوامر ملائمة جدًا للاستخدام عند تنظيم حلقة وعند العمل مع سلاسل من الأحرف.

تجدر الإشارة إلى أن هناك قيودًا متأصلة في الأمر jcxz/jecxz. على عكس تعليمات نقل التحكم الشرطي الأخرى، يمكن لتعليمة jcxz/jecxz معالجة القفزات القصيرة فقط - عند -128 بايت أو +127 بايت من التعليمات التالية.

تنظيم الدورات

الدورة، كما تعلمون، هي بنية خوارزمية مهمة، بدون استخدامها، ربما، لا يمكن لأي برنامج القيام به. يمكنك تنظيم التنفيذ الدوري لقسم معين من البرنامج، على سبيل المثال، باستخدام أوامر النقل الشرطي أو أمر القفز غير المشروط jmp. مع هذا النوع من تنظيم الدورة، يتم تنفيذ جميع العمليات المتعلقة بتنظيمها يدويًا. ولكن، نظرًا لأهمية هذا العنصر الخوارزمي كدورة، قدم مطورو المعالجات الدقيقة مجموعة من ثلاثة أوامر في نظام الأوامر لتسهيل برمجة الدورات. تستخدم هذه الأوامر أيضًا سجل ecx/cx باسم عداد دورة.

دعونا نعطي وصفا موجزا لهذه الأوامر: 1) حلقة Jump_label (حلقة) – كرر الدورة. يسمح لك الأمر بتنظيم حلقات مشابهة للحلقات في اللغات عالية المستوى مع التخفيض التلقائي لعداد الحلقة. مهمة الفريق هي القيام بما يلي:

ب) مقارنة سجل ESX/CX بالصفر: إذا كان (ECX/CX) = 0، فسيتم نقل التحكم إلى الأمر التالي بعد الحلقة؛

2) حلقة/حلقة Transition_label

تعتبر أوامر Loope وLoopz مرادفات مطلقة. عمل الأوامر هو القيام بالإجراءات التالية:

أ) إنقاص سجل ESH/CX؛

ج) تحليل حالة العلامة الصفرية ZF إذا كانت (ECX/CX) = 0 أو XF = 0، فسيتم نقل التحكم إلى الأمر التالي بعد الحلقة.

3) لوبني/لوبنز Transition_label

يعد الأمران Loopne وLoopnz من المرادفات المطلقة أيضًا. عمل الأوامر هو القيام بالإجراءات التالية:

أ) إنقاص سجل ESH/CX؛

ب) مقارنة سجل ESX/CX بالصفر؛

ج) تحليل حالة علامة الصفر ZF: إذا كانت (ECX/CX) = 0 أو ZF = 1، فسيتم نقل التحكم إلى الأمر التالي بعد الحلقة.

إن أوامر Loope/loopz وloopne/loopnz معكوسة في مبدأ عملها. يقومون بتوسيع عمل أمر الحلقة من خلال تحليل علامة zf بالإضافة إلى ذلك، مما يجعل من الممكن تنظيم خروج مبكر من الحلقة باستخدام هذه العلامة كمؤشر.

عيب أوامر الحلقة، وloope/loopz، وloopne/loopnz هو أنها تنفذ فقط قفزات قصيرة (من -128 إلى +127 بايت). للعمل مع الحلقات الطويلة، ستحتاج إلى استخدام أوامر الفرع الشرطي والأمر jmp، لذا حاول إتقان كلتا الطريقتين لتنظيم الحلقات.

أساسيات برمجة الأجهزة MP (محاضرة)

خطة المحاضرة

1. تصنيف أوامر المعالجات الدقيقة

2. أنواع المخاطبة

3. تنسيقات الهيكل والأوامر لـ MP KR580VM80

1. تصنيف أوامر المعالجات الدقيقة

كما ذكرنا من قبل، فإن الميزة الأساسية لـ MP هي قابلية البرمجة. وهذا يعني أنه من خلال تطبيق الأوامر على مدخل MP، من الممكن ضمان التسلسل المطلوب للعمليات، أي. تنفيذ خوارزمية محددة. يمكن أن تكون خوارزمية المشكلة التي يتم حلها معقدة حسب الرغبة، فمن الضروري فقط أن يتم تقسيم هذه الخوارزمية إلى خطوات وفقًا لنظام أوامر MP. لذلك، فإن نظام الأوامر مهم ليس فقط من وجهة نظر ما يمكن أن يفعله النائب، ولكن أيضًا من حيث كيفية تنفيذ الخوارزمية. يمكن أن يؤثر وجود أو عدم وجود أي أمر أو مجموعة أوامر بشكل كبير على اختيار MP لتطبيق معين.

ويرد تصنيف أوامر MP في الشكل 8.

بناءً على عدد خلايا الذاكرة المطلوبة لاستيعاب أمر واحد، يتم التمييز بين الأوامر التي تتكون من كلمة واحدة أو كلمتين أو ثلاث كلمات. تتطلب التعليمات التي تتكون من كلمتين أو ثلاث دورات للوصول إلى الذاكرة دورتين أو ثلاث دورات للوصول إلى الذاكرة، على التوالي، لجلبها.

في العديد من الحالات، خاصة عند مقارنة MPs مع بنيات مماثلة، يكون من المفيد تصنيف الأوامر وفقًا للخصائص المعمارية MP.

من الناحية الوظيفية، تنقسم الفرق إلى ثلاث مجموعات كبيرة: النقل والإدارة ومعالجة البيانات. دعونا نفكر بالتفصيل في الأوامر الرئيسية المستخدمة في MP، باستخدام التصنيف وفقًا للخصائص الوظيفية. سيتم الإشارة إلى أسماء الأوامر بكلمات روسية تشير إلى معنى العمليات التي يتم تنفيذها.

أوامر نقل البيانات توفير نقل بسيط للمعلومات دون إجراء أي عمليات معالجة. تنقسم الأوامر الموجودة في هذه المجموعة إلى أوامر تتعلق بالوصول إلى الذاكرة، وأوامر الوصول إلى التسجيل، وأوامر الإدخال/الإخراج.

تتضمن الأوامر المتعلقة بالوصول إلى الذاكرة ما يلي:

يتذكر(WRITE) والتي يتم من خلالها إرسال محتويات السجل إلى خلية الذاكرة.

يجب أن تشير الأوامر المتعلقة بنقل بايت أو كلمة إلى رقم سجل معين، وعنوان خلية الذاكرة، وإذا لزم الأمر، رقم وحدة التخزين.

يجب أن تشير الأوامر المرتبطة بالوصول إلى السجلات إلى رقم مصدر المعلومات ورقم سجل النتيجة. تتضمن هذه المجموعة الفرعية من أوامر نقل البيانات الأوامر:

تحميل مباشرةحيث يتم كتابة الثابت المحدد في كود الأمر إلى السجل؛

إلى الأمام، والتي يتم من خلالها إرسال محتويات أحد السجلات إلى سجل آخر.

تتضمن أوامر الإدخال/الإخراج ما يلي:

يدخل، والتي يتم من خلالها إرسال محتويات جهاز الإدخال إلى السجل الداخلي لـ MP؛

خاتمة، حيث يتم إرسال محتويات السجل الداخلي لـ MP (عادةً ما يكون تراكمًا) إلى جهاز الإخراج.

أوامر التحكم ، والتي تسمى غالبًا أوامر الانتقال، تتيح لك تنفيذ إجراءات مختلفة وفقًا لقيمة الإشارات أو الشروط الخارجية التي يتم إنشاؤها داخل النظام، وتنقسم جميع أوامر التحكم إلى أوامر انتقال غير مشروطة ومشروطة.

تتضمن أوامر القفز غير المشروط ما يلي:

قفزة غير مشروطة(BP)، والتي بموجبها تتم كتابة محتويات حقل عنوان أمر BP إلى عداد البرنامج، أي. يوفر الانتقال في البرنامج إلى العنوان المحدد في الأمر؛

تحويل غير مشروط مع استرداد الأموال(الانتقال إلى روتين فرعي)، والذي يتم من خلاله كتابة محتويات جديدة إلى عداد البرنامج (عنوان الأمر الأول من الروتين الفرعي)، ولكن على عكس أمر BP، يتم حفظ حالة عداد البرنامج وبعض السجلات الأخرى في الذاكرة . عند تنفيذ روتين فرعي على أمر RETURN الأخير، تتم استعادة محتويات عداد البرنامج وجميع السجلات.

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

القفزة المشروطة(UP) حسب العنوان. يجب أن يشير رمز أمر UP إلى الحالة التي يتم التحقق منها، والتي يستخدم MT لها قيمة صفر أو غير صفر للنتيجة، وعلامة إيجابية أو سلبية للنتيجة، ووجود أو عدم وجود حمل إشارات، تجاوز، إلخ. عند استيفاء الشرط، تتم كتابة محتويات عداد العناوين إلى عداد البرنامج. حقول أوامر UE، أي. يوفر الانتقال في البرنامج إلى العنوان المحدد في الأمر. إذا لم يتم استيفاء الشرط، يتم نقل التحكم إلى أمر البرنامج التالي؛

انتقال مشروط مع العودة، والذي يختلف عن الأمر UNCONDITIONAL JUMP With RETURN حيث أن الانتقال إلى الروتين الفرعي يحدث فقط عند استيفاء الشرط المحدد.

عادةً، يشتمل نظام أوامر MP على العديد من الأوامر المساعدة التي تسمح لك بالتحكم في حالة السجلات أو المشغلات التي تؤثر على تنفيذ التحولات الشرطية، على سبيل المثال: SET FLAG، وRESET FLAG، وSET BATTERY HIGH BIT، وRESET BATTERY HIGH BIT، وما إلى ذلك .

أوامر معالجة البيانات وتنقسم إلى حسابية ومنطقية. الحسابية منها:

يطوىمحتويات سجلين أو سجل وخلية ذاكرة؛

طرح او خصممن محتويات خلية ذاكرة أو سجل، محتويات السجل؛

زيادة بمقدار 1(زيادة) محتويات خلية الذاكرة أو السجل (مؤشر المكدس، سجل الفهرس، المجمع)؛

انخفاض بمقدار 1(DECREMENT) محتويات خلية الذاكرة أو السجل؛

أضف مع التنفيذ، والتي يتم من خلالها إجراء الإضافة مع مراعاة حالة مشغل النقل. وهذا يجعل من السهل تنظيم معالجة الأعداد الكبيرة؛

طرح المحاسبة القرض;

يحولمحتويات خلية الذاكرة أو السجل (عادة بت واحد).

تتضمن المجموعة الفرعية للأوامر المنطقية الأوامر التالية:

و(الضرب المنطقي)، ويتم من خلاله إجراء عملية الاقتران بين محتويات سجلين أو خلية ذاكرة وسجل؛

أو(الإضافة المنطقية)، والتي يتم من خلالها إجراء عملية الفصل بين محتويات سجلين أو خلية ذاكرة وسجل؛

البطلان، الذي يقوم بإجراء مقارنة ثنائية لمحتويات سجلين أو خلية ذاكرة وسجل؛

الانعكاسمحتويات خلية الذاكرة أو السجل.

2. أنواع المخاطبة

من أهم الخصائص المعمارية لـ MP هي قائمة الطرق الممكنة للوصول إلى الذاكرة أو أنواع العنونة. تعتبر قدرات المعالجة لـ MP مهمة من وجهتي نظر.

أولا، تتطلب كمية كبيرة من الذاكرة طول عنوان كبير، حيث أن عنوان n-بت يسمح بالوصول إلى الذاكرة بسعة 2n كلمة. تتيح الكلمات MP النموذجية ذات 8 بت إمكانية الوصول المباشر إلى 256 خلية ذاكرة فقط، وهو ما لا يكفي بوضوح. إذا أخذنا في الاعتبار أن الوصول إلى الذاكرة هو العملية الأكثر شيوعًا، فمن الواضح أن كفاءة استخدام MP تتحدد إلى حد كبير من خلال طرق معالجة حجم كبير من الذاكرة بسعة صغيرة من MP.

ثانيا، لسهولة البرمجة، من المرغوب فيه أن يكون لديك نظام بسيط لتوليد عناوين البيانات عند العمل مع المصفوفات والجداول والمؤشرات. دعونا ننظر في طرق حل هذه المشاكل.

إذا كان حقل عنوان الأمر محدودا وغير كاف للوصول مباشرة إلى أي خلية ذاكرة، فسيتم تقسيم الذاكرة في مثل هذه الحالات إلى صفحات، حيث تعتبر خلايا الذاكرة 2n صفحة.

لمطابقة حقل العنوان لأمر صغير البت مع ذاكرة ذات سعة كبيرة (لحل مشكلة "الصفحة")، يتم استخدام أنواع مختلفة من العنونة في MP:

معالجة مباشرة إلى الصفحة الحالية . باستخدام هذه العنونة، ينقسم عداد البرنامج إلى حقلين؛ البتات ذات الترتيب العالي تشير إلى رقم الصفحة، والبتات ذات الترتيب المنخفض تشير إلى عنوان الخلية في الصفحة. يحتوي حقل عنوان الأمر على عنوان الخلية الموجودة في الصفحة، ويجب تعيين عنوان الصفحة بطريقة أخرى، على سبيل المثال، باستخدام أمر خاص.

معالجة مباشرة باستخدام تسجيل الصفحة. يجب أن يكون لدى MP سجل صفحات يمكن الوصول إليه برمجيًا ويتم تحميله بواسطة أمر خاص. يضيف هذا السجل عدة بتات إلى حقل عنوان التعليمات، وهي ضرورية لمعالجة الذاكرة بأكملها.

المخاطبة المباشرة باستخدام الكلمات المزدوجة. لزيادة طول حقل عنوان الأمر، يتم تخصيص كلمة إضافية للعنوان (واثنتان إذا لزم الأمر).

معالجة نسبة إلى عداد البرنامج. يتم التعامل مع حقل عنوان التعليمات كعدد صحيح موقّع، تتم إضافته إلى محتويات عداد البرنامج لتكوين عنوان التنفيذ. تقوم طريقة العنونة النسبية هذه بإنشاء صفحة عائمة وتسهل نقل البرامج في الذاكرة.

معالجة نسبة إلى تسجيل الفهرس. يتم تشكيل عنوان التنفيذ من خلال جمع محتويات سجل الفهرس وحقل عنوان الأمر، والذي يعتبر عددًا صحيحًا موقّعًا. يتم تحميل سجل الفهرس بأوامر خاصة.

المخاطبة غير المباشرة . عند استخدام العنونة غير المباشرة، يحدد حقل عنوان الأمر العنوان الموجود على الصفحة الحالية حيث يتم تخزين العنوان التنفيذي. في هذه الحالة، يلزم وجود بت إضافي في حقل الأمر - علامة على المعالجة غير المباشرة. لا يمكن تخزين العنوان التنفيذي في خلية ذاكرة، بل في سجل للأغراض العامة. في هذه الحالة، تسمى العنونة غير المباشرة بالعنونة المسجلة.

3. تنسيقات الهيكل والأوامر لـ MP KR580VM80

يحتوي نظام الأوامر MP لسلسلة KR580VM80 على أوامر بثلاثة تنسيقات: بايت واحد، بايت مزدوج وثلاثة بايت.

تشير محتويات البايت الأول إلى تنسيق الأمر، ورمز التشغيل، ونوع العنونة، والسجلات أو أزواج التسجيل، إذا كانت مشتركة في العملية. ومع ذلك، فمن المستحيل تحديد البتات المحددة المخصصة للثلاثة الأولى من البايت. المكونات المحددة للأمر، لأنها يمكن أن تكون موجودة في أي جزء من الأمر. لكن رغم ذلك سنفترض أنها مشفرة في حقل واحد وهو ما يسمى بحقل كود التشغيل. يتم عرض متغيرات التنسيقات للبايت الأول من الأمر في الشكل 9.

إذا كانت السجلات متضمنة في العملية، فقد يتم تحديد واحد أو اثنين منها في البايت الأول من الأمر. في هذه الحالة، يتم تعيين بتات محددة تمامًا لأرقام التسجيل في حقل الأمر: تقوم البتات الثلاثة ذات الترتيب المنخفض (b2 - b0) بتشفير رقم السجل المصدر الذي يحتوي على المعامل، والبتات الثلاث المتوسطة (b5 - b3) - رقم سجل الوجهة الذي تُرسل إليه نتيجة العملية. وفي تلك الحالات، عندما لا يكون كلا السجلين أو أحدهما مشتركين في تنفيذ العملية، تُستخدم البتات المقابلة لشفرة العملية.

يتم قبول ترميز التسجيل التالي:

000 - السجل ب، 100 - السجل ح،

001 - السجل ج، 101 - السجل إل،

010 - سجل D، 110 - خلية الذاكرة،

011 - سجل E، 111 - البطارية أ.

الرمز 100 هو علامة على معالجة الذاكرة غير المباشرة باستخدام عنوان 16 بت موجود في سجلات H وL. اعتمادًا على موقع هذا الرمز في الأمر، يتم الوصول إلى خلية الذاكرة المقابلة إما لمعامل أو لكتابة نتائج العملية.

يوفر عدد من أوامر MP معالجة أو إرسال أرقام مزدوجة الطول. في هذه الحالات، يتم دمج أزواج السجلات B وC أو D وE أو H وL في سجلات ذات 16 بت مرقمة 00 و01 و10 على التوالي. يتم تعيين أرقام أزواج التسجيل في الأوامر إلى البتتين b2 وb1 (سجل المصدر)، وb5 وb4 (سجل الوجهة)، ويتم استخدام البتتين b0 وb3 للإشارة إلى رمز العملية.

تتضمن أوامر البايت المزدوج في MP أوامر ذات عنونة مباشرة وأوامر إدخال/إخراج، وبناءً على ذلك، تحتوي البايتة الثانية من أمر هذه المجموعة على معامل 8 بت أو عنوان 8 بت لجهاز الإدخال أو الإخراج.

في التعليمات ثلاثية البايت، تحتوي البايتتان الثانية والثالثة على عناوين 16 بت (في تعليمات العناوين المباشرة) أو معاملات 16 بت (في تعليمات تحميل أزواج التسجيل ومؤشر المكدس).

بعد تنفيذ كل عملية ALU، يتم إنشاء خمس إشارات، يمكن أن تؤثر قيمها على تنفيذ أوامر معالجة المعلومات اللاحقة ونقل التحكم المشروط، ومع ذلك، يجب أن يؤخذ في الاعتبار أن الأوامر المختلفة لها تأثيرات مختلفة على العلامات الفردية.

لتسهيل حفظ واستعادة حالة MP أثناء الانقطاعات والانتقالات إلى الإجراءات الفرعية، يتم تخزين جميع الخصائص المحددة في سجل خاص - سجل الخصائص. يظهر في الجدول موقع العلامات في بتات التسجيل.

حيث S هي سمة "العلامة" (تأخذ قيمة البت الأكثر أهمية

نتيجة)؛

Z - علامة النتيجة صفر؛

AC هي علامة على النقل المساعد (إذا كان هناك نقل

بين رباعيات البايت، ثم AC=1، وإلا AC=0؛

P - علامة تكافؤ النتيجة (إذا كان عدد الآحاد في البايت

النتيجة زوجية، ثم P=1، وإلا P=0)؛

ج - علامة النقل أو الإعارة (إذا، عند تنفيذ الأوامر،

عندما يكون هناك نقل من رتبة عليا أو إعارة إلى رتبة عليا

أعلى رقم هو C=1، وإلا C=0).

ملحوظة: بالنسبة لأوامر الضرب المنطقية، تأخذ علامة الحمل المساعدة AC قيمة البت الرابع من النتيجة.

يتوفر نظام الأوامر الكامل لسلسلة MP KR580VM80 في ملحق الكتاب المدرسي "المعالجات الدقيقة وأنظمة المعالجات الدقيقة". هناك، لكل أمر، تتم الإشارة إلى كيفية تغيير قيمة كل سمة بعد تنفيذه: يتم ضبطها وفقًا لنتيجة العملية (+)، ولا تتغير (-)، ويتم إعادة تعيينها إلى الصفر (0) ) أو اضبطه على واحد (1).

بشكل عام، يجب أن يحتوي الأمر على المعلومات التالية:

– رمز التشغيل الذي يشير إلى العملية التي يجب أن يقوم بها MP؛

-عناوين معاملين (يضيف، مطروح، وما إلى ذلك). إذا كان أي من المعاملات ثابتًا، فبدلاً من عنوانه، يمكن تحديد قيمة المعامل نفسه في الأمر. ومع ذلك، يجب أن ينعكس هذا الظرف في رمز التشغيل بحيث يستخدم MP الجزء المناسب من الأمر للغرض المقصود منه؛

– عنوان خلية الذاكرة التي يجب وضع نتيجة العملية فيها؛

- عنوان الأمر التالي.

أولئك. يكون الأمر بشكل عام مكونًا من أربعة عناوين، ومع ذلك، فإن بنية الأمر هذه تؤدي إلى تنسيق أمر أطول، والذي يرتبط بدوره بعملية معالجة أكثر تعقيدًا وبنية المعالج. لذلك، في تقنية MP، تكون الأوامر بدون عنوان والأوامر أحادية البث هي الأكثر انتشارًا، مما يجعل من الممكن بناء معالج بسيط، ومع ذلك، عند إجراء عمليات معقدة، يتم استخدام تنسيقات أوامر مختلفة.

يحتوي نظام التعليمات MP لسلسلة 580 على تعليمات أحادية البايت ومزدوجة البايت وثلاث بايتات.

توجد معلومات حول كيفية معالجة الأمر في كود تشغيل البايت الأول للأمر.

لتسريع العمليات الحسابية، يتم تخزين بعض المعاملات في كتلة RON. تستخدم التعليمات التي تعمل على هذه المعاملات رموز عناوين مختصرة (عنوان التسجيل).

تتيح لك هذه الأوامر التخلص من الدورة الطويلة نسبيًا للوصول إلى ذاكرة الوصول العشوائي وبالتالي زيادة سرعة العمليات بشكل كبير. نظرًا للسعة المحدودة لـ RON وعند العمل مع مجموعة كبيرة من البيانات، يتم استخدام طرق معالجة أخرى تسمح بالوصول إلى المعاملات الموجودة في الذاكرة خارج MP. الأكثر شيوعًا هو تسجيل العنونة غير المباشرة، والتي تستخدم زوج تسجيل HL.

في مجموعة أوامر نقل التحكم، هناك أربعة أنواع من الأوامر: الفروع غير المشروطة، والفروع المشروطة، والحلقات والمقاطعات .

أوامر القفز غير المشروطة. تتضمن ثلاثة رموز تذكيرية: JMP (القفز غير المشروط)، CALL (مكالمة روتينية) وRET (العودة من الروتين الفرعي).

يتيح لك أمر JMP الانتقال إلى أي نقطة في البرنامج، الموجودة في مقطع البرنامج الحالي وفي مقطع آخر. عند القفز داخل مقطع البرنامج الحالي، يتم استخدام تنسيقات تعليمات JMP الثلاثة الأولى.

يوفر التنسيق الأول انتقالًا إلى نقطة عشوائية في البرنامج ضمن مقطع البرنامج الحالي، حيث تتم إضافة إزاحة 16 بت إلى محتوى IP في رمز مكمل ثنائي، ويتم توقيع الجزء الأكثر أهمية منه. يتيح لك التنسيق الثاني المختصر الانتقال إلى نقطة في البرنامج لا تزيد عن -128-f-127 عنوانًا من تعليمات JMP. أخيرًا، يقوم التنسيق الثالث بتحميل مؤشر التعليمات برقم 16 بت، الموجود في العنوان التنفيذي EA، والذي يتم تحديده بواسطة البايت البريدي. يسمى هذا الانتقال غير مباشر لأنه يتم استخدام العنونة غير المباشرة.

لتنفيذ انتقال غير مشروط إلى نقطة برنامج تقع خارج مقطع البرنامج الحالي عند الحاجة إلى إعادة تحميل سجل مقطع CS، يتم استخدام تنسيقي تعليمات JMP الرابع والخامس.

يحدد التنسيق الرابع انتقالًا مباشرًا بين المقاطع، حيث تشير البايتتان الثانية والثالثة من التنسيق إلى العنوان النسبي لنقطة الانتقال، وتشير البايتتان الرابعة والخامسة إلى قيمة CS الجديدة. يتيح لك التنسيق الخامس، باستخدام بايت بريدي، تحديد العنوان التنفيذي EA، الذي يقع فيه العنوان النسبي لنقطة الانتقال (في بايت الذاكرة مع العناوين EA، EA+1)، وقيمة CS الجديدة (في بايت الذاكرة إي +2، إي +3).

يسمح لك أمر CALL باستدعاء روتين فرعي موجود إما في مقطع البرنامج الحالي أو في منطقة ذاكرة أخرى. له نفس تنسيقات أمر JMP، إلا أنه أقصر. على عكس أمر JMP ذو التنسيق المماثل، فإن أمر CALL، قبل تغيير قيم IP أو IP وCS، يكتب تلقائيًا القيم الحالية لهذه السجلات إلى المكدس، مما يضمن تذكر نقطة الإرجاع من الروتين الفرعي.

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

بالنسبة لإرجاع المقاطع، يتم استخدام تنسيقات RET الثالثة والرابعة، والتي توفر استرداد محتويات كل من مؤشر التعليمات ومقطع البرنامج.

أوامر القفز المشروطة.التحكم في النقل اعتماداً على نتائج العمليات السابقة. هناك ثلاثة أنواع من القفزات الشرطية التي تُستخدم لإنشاء علاقات بين الأرقام الموقعة، والأرقام غير الموقعة، والأرقام العشوائية. في النوعين الأولين، يتم اختيار رموز مختلفة للأوامر لنفس العلاقات بين الأرقام، حيث أن قيم العلم المختلفة تتوافق مع نفس العلاقات بين الأرقام الموقعة وغير الموقعة.

في الرموز الاستذكارية لأوامر الانتقال الشرطي، عند مقارنة الأرقام الموقعة، يُستخدم الحرف للإشارة إلى الشرط "أكبر من" ز (أكبر- أكثر)، وللتعيين - حرف "أقل". ل (أقل- أقل). في ظروف مماثلة، عند مقارنة الأرقام غير الموقعة، يتم استخدام الحروف على التوالي أ(أعلاه- أعلاه) و أقل- تحت). يتم الإشارة إلى شرط المساواة بالحرف ه (يساوي- يساوي)، وعدم الوفاء ببعض الشروط - بالحرف ن(لا- لا). تجدر الإشارة إلى أنه يُسمح باستخدام رمزين تذكير مختلفين لكل أمر؛ على سبيل المثال، الرمزان التذكيريان JL وJNGF متكافئان، نظرًا لأن الشرطين "أقل من" و"ليس أكبر من أو يساوي" متطابقان.

يتم تقديم قائمة كاملة برموز تذكير الأوامر والشروط التي يتم التحقق منها بالإضافة إلى مجموعات الأعلام المنطقية المقابلة وقيمها في الجدول. 1.4.

الجدول 1.4

رمز ذاكري الأمر حالة معنى الأعلام
للأرقام الموقعة
جى إل/جنج أقل/ليس أكثر من أو يساوي سادس + أوف = ل
JNL/JGE لا يقل عن/ أكبر من أو يساوي سادس + أوف = 0
جي جي/JNLE أكثر من/ليس أقل من أو يساوي (SF + OF) V ZF = 0
جنغ/جلي ليس أكبر من/أقل من أو يساوي للأرقام غير الموقعة (SF + OF) V ZF = ل
جي بي/JNAE أقل/ليس أكثر من أو يساوي قوات التحالف = 1
جي ان بي/جاي لا يقل عن/ أكبر من أو يساوي قوات التحالف = 0
جا/ج.ن.ب.ي أكثر CF V ZF = 0
الجيش الوطني الأفغاني/جبي لا مزيد من البيانات الأخرى CF V ZF = 1
جي / جي زد يساوي / صفر زف = 1
جي إن إي/جي إن زي لا يساوي / صفر زف = 0
شبيبة بواسطة ناقص سادس = 1
جي إن إس على الجانب الإيجابي سادس = 0
جو تجاوز أوف = ل
JNO بسبب عدم وجود الفائض من = 0
جي بي/جي بي إي حتى بالتكافؤ يف = 1
JNP/JPO بواسطة التكافؤ الغريب يف = 0

جميع تعليمات الانتقال الشرطي لها نفس التنسيق ثنائي البايت، البايت الأول منها هو رمز التشغيل (OPC)، والثاني عبارة عن إزاحة 8 بت، والتي يتم التعامل معها كرقم موقع وبالتالي تسمح بتغيير العنوان في النطاق من -128 إلى +127. إذا كان هناك حاجة إلى انتقال أكثر بعدًا ("بعيدًا") عند استيفاء الشرط، فسيتم استخدام أمر انتقال غير مشروط إضافي.

تتم الإشارة إلى وقت تنفيذ كل من تعليمات القفز المشروط في حالتين: 1) استيفاء الشرط ونقل التحكم فعليًا وفقًا للإزاحة، 2) عدم استيفاء الشرط، لذلك يتم نقل التحكم إلى التعليمة التالية.

فرق لتنظيم الدورات.تم تقديمه في وحدة المعالجة المركزية لتسهيل إجراء الدورات الحسابية. تتضمن هذه الرموز الرموز التذكيرية التالية: LOOP (حلقة حتى (CX) لا تساوي 0)، وLOOPNZ/LOOPNE (حلقة حتى صفر/لا تساوي)، وLOOPZ/LOOPE (حلقة حتى صفر/تساوي)، وJCXZ (انتقل إلى صفر في ش). يحتوي كل أمر من هذه الأوامر على تنسيق ثنائي البايت، حيث تحدد البايتة الثانية إزاحة 8 بت المستخدمة لترتيب الانتقال. يتم التعامل مع هذه الإزاحة كرقم موقع ويتم تمديدها إلى 16 بت قبل حساب عنوان الانتقال.

باستخدام أوامر الحلقة مع أوامر معالجة عناصر السلسلة، يمكنك إنشاء برامج تحويل سلسلة معقدة إلى حد ما. لنفكر في مثال لإنشاء برنامج لتحويل سلسلة من البيانات المكتوبة في نظام الأرقام السداسية العشرية إلى بعض التعليمات البرمجية التي يوجد جدول التحويل لها في الذاكرة من عنوان البداية المحدد في BX، كما هو مطلوب لاستخدام أمر تحويل الجدول لـ XLAT رموز. لنفترض أيضًا أن السلسلة المصدر تحتوي على 80 عنصرًا وتقع في الذاكرة من عنوان البداية النسبي 100، ويجب وضع السلسلة الناتجة من العنوان النسبي 200. البرنامج الذي يحول السلسلة المصدر إلى السلسلة الناتجة، باستخدام الأمر قيمة علامة الاتجاه DF=0، سيكون لها الشكل:

موفيسي،100
موف دي، 200
موف سي إكس، 80

يتم هنا استخدام أمر تحويل جدول XLAT الموضح في الإصدار 1.2.

أوامر المقاطعة.يتضمن ثلاثة فن الإستذكار: INT (المقاطعة)، INTO (المقاطعة عند تجاوز السعة)، وIRET (عودة المقاطعة).

أمر المقاطعة INT في الخامس = 1له تنسيق ثنائي البايت، ويحتوي البايت الثاني منه على رقم مكون من 8 بتات يحدد النوع (يكتب)أو مستوى المقاطعة. بواسطة أمر إنت يكتبيشرع المعالج في تنفيذ برنامج خدمة المقاطعة للمستوى المحدد، ويتم تنفيذ الإجراءات اللازمة لضمان العودة إلى نقطة المقاطعة تلقائيًا. هذه الإجراءات هي كما يلي: تتم كتابة محتويات سجل إشارات F إلى المكدس (PUSHF)، وإعادة تعيين علامتي IF وTF، وتتم كتابة القيم الحالية لسجل CS ومؤشر تعليمات IP إلى المكدس.

لتحديد عنوان البداية لبرنامج الخدمة حسب القيمة يكتبيتم استخدام جدول مستوى المقاطعة. لكل مستوى من مستويات المقاطعة البالغ عددها 256 في هذا الجدول، يتم تخصيص أربع بايتات: تحدد البايتتان الأوليان قيمة مؤشر تعليمات IP، والثانية - قيمة سجل مقطع CS. تحدد هذه البايتات الأربع عناوين البداية لبرامج الخدمة (أزواج قيم CS وIP)، والتي يجب كتابتها أولاً على خلايا الذاكرة عند العناوين المطلقة 0-3FFH. عنوان الجدول المطابق لذلك المحدد في أمر INT يكتبيتم تحديد مستوى المقاطعة في وحدة المعالجة المركزية على النحو التالي. بعد تخزين القيم الحالية لـ CS وGR في المكدس، يتم التحميل: CS = يكتبس 4 + 2 والملكية الفكرية = يكتبس 4. قيم CS وIP الجديدة مأخوذة من خلايا العناوين على التوالي يكتبس 4 + 2 و يكتبس 4, تحديد عنوان البداية لبرنامج الصيانة المطلوب.

أمر مقاطعة INT الذي تمت مناقشته أعلاه عندما تكون قيمة الحقل الخامس = 0له تنسيق بايت واحد، أي أنه لا يتطلب إشارة خاصة إلى مستوى المقاطعة. ينظر المعالج تلقائيًا إلى هذا الأمر على أنه مقاطعة من المستوى 3. (النوع=3)ويستخدم عادة في البرامج كنقطة تفتيش.

يؤدي أمر مقاطعة INTO overflow إلى الانتقال إلى خدمة مقاطعة المستوى الرابع (النوع = 4)في حالة قيمة العلم الفائض من = 1.يُستخدم أمر INTO عادةً بعد الأوامر الحسابية الموقعة. عادةً، يتم حجز مستويات المقاطعة القليلة الأولى (حتى 32) لمعالجة عدد من المواقف المحددة، مثل محاولة القسمة على صفر، وتجاوز السعة، وما شابه.

من خصوصيات معالجة المقاطعات ذات المستويات المحجوزة أن المعالج يشرع في خدمتها بغض النظر عن قيمة علامة تمكين المقاطعة IF.

يتم وضع تعليمات IRET ذات البايت الواحد في نهاية كل روتين خدمة المقاطعة وتوفر عودة المقاطعة. باستخدام هذا الأمر، يسترد المعالج قيمة مؤشر تعليمات IP ومقطع برنامج CS من المكدس، كما يستعيد أيضًا المحتويات السابقة لسجل إشارات F (كما هو الحال مع أمر POPF). إذا لزم الأمر، يمكن تخزين محتويات سجلات وحدة المعالجة المركزية المتبقية المقابلة للبرنامج الذي تمت مقاطعته على المكدس عند الانتقال إلى برنامج الخدمة ثم استعادتها عند العودة منه باستخدام تعليمات الوصول إلى المكدس.

عن طريق العنوان غير المباشر

PCHL – يتم تخزين عنوان الانتقال في زوج تسجيل HL. عند تنفيذه (HL) → الكمبيوتر الشخصي.

أوامر القفز المشروطة

Jcon @، حيث con هو شرط تذكيري من الكلمة الإنجليزية condition.

وقد لوحظ سابقًا أن حالة البتات (الأعلام) الخاصة بـ RgP (F) تُستخدم كشرط انتقالي. يتم عرض أساليب الإستذكار المقابلة لهذه الحالات في الشكل. 6.18.

على سبيل المثال: JC 8BFE – عندما ينتقل C=1 إلى العنوان 8BFE، عندما يكون C=0 يتم تنفيذ الأمر التالي على العنوان.

أوامر لاستدعاء PP والعودة

لقد لوحظ سابقًا أن عنوان الإرجاع يتم تخزينه تلقائيًا على المكدس، أي. (كمبيوتر) ® مكدس.

أوامر غير مشروطة

CALL @ - مكالمة روتينية؛

RET – العودة من الروتين الفرعي.

الأوامر الشرطية

Ccon @ - مكالمة روتينية؛

Rcon – العودة من الروتين الفرعي.

عمل الأوامر مشابه لعمل أوامر القفز المشروط، أي. إذا كان الشرط صحيحا، ثم اتصل أو العودة. إذا لم يكن الأمر كذلك، فسيتم تنفيذ الأوامر التالية.

أوامر التحكم الأخرى

RST n، حيث n = 0.1،...,7 - إعادة التشغيل وفقًا لمتجه المقاطعة n.

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

تم تعيين هذا العنوان على النحو التالي. الأمر RST له البنية 11NN N111، أي. بايت واحد. يتم تحديد تركيبة NNN ثلاثية البت بالقيمة n (n = 0...7). يتم إدخال القيمة 0000 0000 00NN N000 في عداد أوامر الكمبيوتر، والذي يعمل كعنوان لمتجه المقاطعة المقابل.

وبالتالي، من خلال تعيين قيمة معينة لـ n، يمكنك إنشاء عنوان أحد متجهات المقاطعة الثمانية. تقع هذه العناوين في المنطقة من 0000H إلى 0038H من مساحة العنوان وتمر عبر 8 بايت، أي. يتم حجز أول 64 خلية ذاكرة لهم (يتم تخصيص 8 بايت لكل من المتجهات الثمانية). في هذه المناطق (8 بايت لكل منها) تتم كتابة فقط أوامر الانتقال إلى الإجراءات الفرعية المقابلة (المعالجات)، الموجودة في مناطق الذاكرة الأخرى.

يجب أن تنتهي الإجراءات الفرعية المقاطعة (مثل الإجراءات الفرعية العادية) بأمر RET. أثناء تنفيذ هذا الأمر، يتم تحديد عنوان أمر البرنامج الرئيسي الذي حدثت قبله المقاطعة من المكدس ونقله إلى سجل العناوين PA، ويتم إدخال القيمة التي زادت بمقدار 1 في عداد البرنامج.

EI - تمكين المقاطعة. يتم وضع هذا الأمر في بداية قسم البرنامج حيث يتم تمكين المقاطعة. باستخدام هذا الأمر، يتم تعيين مشغل تمكين المقاطعة في وحدة التحكم MP على الحالة 1.

DI - تعطيل المقاطعة. يتم وضع هذا الأمر في نهاية قسم البرنامج حيث تم تمكين المقاطعة ويعيد تعيين المشغل إلى الحالة 0.

NOP هو أمر "فارغ". يتخطى 4 تدابير. يتغير جهاز الكمبيوتر فقط.

HLT - توقف. يؤدي إلى توقف تنفيذ البرنامج والدخول إلى حالة التوقف. يتم قطع اتصال MP عن العنوان الخارجي وناقلات البيانات (أي تنتقل مخازنها المؤقتة إلى الحالة Z). يتم ضبط إخراج WAIT (الانتظار) على المستوى 1. ويمكن مقاطعة هذه الحالة عن طريق إشارات بدء MP أو عن طريق وضعها في حالة المقاطعة.

أسئلة الاختبار الذاتي

1. ما هي الأجهزة اللازمة لإنشاء حاسوب صغير بسيط؟

2. قم بإدراج 5 خيارات لهياكل الحواسيب الصغيرة.

3. استخدام واجهة وسيطة.

4. ماذا يشمل مفهوم "وحدة تحكم PU"؟

5. اذكر خصائص المعالج I8080.

6. سجلات البيانات. الغرض منها.

7. تسجيل السجلات. ما هي السمات المخزنة في هذه السجلات؟

8. وصف مبدأ تبادل البيانات ثنائي الاتجاه بين SD الداخلي والخارجي.

9. ما هي السجلات التي يمكن للمبرمج استخدامها؟

10. أعط رسمًا تخطيطيًا لجهاز كمبيوتر صغير يعتمد على MP KR580VM80.

11. ما هي الدورات التي تتكون منها دورة الآلة؟

12. قم بإدراج تنسيقات البيانات الخاصة بـ MP KR580VM80.

13. قم بإدراج تنسيقات أوامر MP KR580VM80.

14. ما هي طرق العنونة المستخدمة في MP KR580VM80؟

15. ما هي المجموعات التي يمكن تقسيم فرق MP KR580VM80 إليها؟

16. عمليات النقل أحادية البايت. أعط أمثلة على الأوامر من هذه المجموعة.

17. عمليات نقل مزدوجة البايت. أعط أمثلة على الأوامر من هذه المجموعة.

18. ما هي عمليات البطارية التي تعرفها؟

19. العمليات في RON والذاكرة. ما هي العمليات التي تشملها؟

20. قم بإدراج أوامر التحكم.

مهام التحكم

1. يجب أن تشير أوراق الإجابة إلى رقم المجموعة واسم الطالب الأخير ورقم خياره.

2. يتم اختيار أرقام الأسئلة من قبل الطالب وفقا لآخر رقمين له في دفتر العلامات. في الجدول 6.1، n-1 هو الرقم قبل الأخير من الرقم، وn هو الرقم الأخير. تحتوي خلايا الجدول على عدد الأسئلة التي يجب تقديم إجابة كتابية عليها.

أرقام الأسئلة الجدول 6.1

ن ن-1
1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18
3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17
2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18
3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18
1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17
3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16
1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19
4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19
1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19
3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19

تشير عملية الانتقال غير المشروط (BP) إلى عمليات النقل غير المشروط للسيطرة وتتكون مما يلي. في بداية العملية، يتم إرسال محتويات CC، التي تشير إلى الأمر الذي يتبع BP (عنوان الإرجاع)، إلى P1 AU إذا كان البرنامج يوفر إرجاعًا؛ يتيح لك هذا حفظ عنوان المرسل عن طريق نقل محتويات P1 (على سبيل المثال، عن طريق تشغيل 3G) إلى الذاكرة. للقيام بذلك، يجب أن تحتوي الأوامر الأولى لقسم البرنامج الذي تم الانتقال إليه على العملية المقابلة. في المرحلة التالية من العملية، تتم قراءة محتويات 1-14 بت، وهو عنوان الانتقال، من ذاكرة الوصول العشوائي أو خلية ROM بالعنوان المحدد في أمر BP في SchK. في هذا العنوان، يتم بعد ذلك تقديم طلب إلى ذاكرة القراءة فقط (ROM) للأمر الذي يتم الانتقال إليه.

عملية التحول

في تنسيق الإزاحة (FSD)، يتم ترميز العمليات "الإزاحة الحسابية لليمين (يسار)" و"الإزاحة المنطقية لليمين (يسار)". عند تنفيذها، يتم تنفيذ الإجراءات على الرقم الموجود في AC. يتم تحديد السمات في الأمر: اتجاه التحول (5 ص)، وأنواع التحولات (8.9 ص) وعددهم (1-4 ص). أثناء العملية، يتم إزاحة بتات السجل P2، ويتم تسجيل النتيجة في المسجلات P2 وRSM، ويتم الإزاحة إلى اليمين بمقدار 3 بتات في نفس الوقت، ويكون الإزاحة إلى اليسار بمقدار 1 بت. تحدد قيمة البتة الخامسة التي تساوي "1" التحول إلى اليسار، أي ما يعادل "0" - إلى اليمين.

العمليات دورية. يتم حساب عدد دورات التحول بواسطة عداد الدورة (CC). قبل تنفيذ الجزء الدوري من العملية، يتم إرسال محتويات 1-5 بتات من الأمر التي تحتوي على ثابت وعلامة التحول إلى المركز. بعد ذلك، يتم إرسال محتويات P2 إلى RSM. يتم تنفيذ التحول نفسه بسبب النسخ "المائل" لمحتويات السجلات P2 وPcm إلى P2' وPcm'، على التوالي. ثم تتم إعادة كتابة نتيجة التحول من PCm' وP2' خلال SM1 وSM2 إلى P2 وPSM. تتم الإشارة إلى اكتمال العملية بقيمة SchT = 0.

اعتمادًا على نوع الإزاحة (L أو A)، يتم إزاحة جميع البتات الـ 16 (L) أو 15 بت فقط (الجزء العشري) بدون العلامة (A). عند التحول إلى اليمين، يتم ملء البتات ذات الترتيب العالي التي تم إخلاؤها بعلامة، وعند التحول إلى اليسار، يتم ملء البتات ذات الترتيب المنخفض التي تم إخلاؤها بالأصفار. أثناء التحول المنطقي إلى اليمين أو اليسار، يتم ملء البتات الفارغة بالأصفار.

يمكنك أيضًا تغيير ثابت التحول برمجيًا.

32 تفاعل العقد وعناصر المخطط الهيكلي لمعالج CB عند إجراء عمليات القفز الشرطي.

عمليات القفز المشروط



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

يحتل أمر "الانتقال الشرطي" (JJ) خليتين ROM متجاورتين. تحتوي الخلية الأولى على الأمر، بينما تحتوي الخلية الثانية على عنوان الانتقال. يتم تحديد القفزة الشرطية من خلال مجموعة من 7 إلى 9 بتات من الأمر، ويتم تحديد شرط وضع عنوان الإرجاع بواسطة البتة السادسة.

عند استيفاء الشرط، يتم إدخال عنوان الانتقال في عداد البرنامج، وبالتالي سيتم قراءة رمز الأمر التالي من الخلية التي تحتوي على هذا العنوان. يتم إدخال عنوان المرسل في P1 إذا كانت البتة السادسة تساوي 0 وفي Pcm إذا كانت قيمة هذه البتة تساوي واحدًا.

إذا لم يتم استيفاء شرط الانتقال، فسيتم تحديد التعليمات التالية من الخلية التي تحمل رمز العنوان i+2. في هذه الحالة، يتم إدخال الرمز المحدد (عنوان المرسل) في P1 بغض النظر عن قيمة البت السادس من الأمر. يتم تحديد الأخير من خلال خوارزمية التشغيل لمعالج SV عند فك تشفير رمز تشغيل UE.

يرجع إدخال عنوان الإرجاع على PCM إلى حقيقة أن الإخراج إلى ناقل التعليمات البرمجية من التيار المتردد يحتوي على السجل المحدد فقط.

خصوصية تنفيذ عملية NC هي أنه إذا كان هناك رمز 111 أو 000 في بتات "القناع" للأمر، فإن الانتقال الشرطي يتحول إلى انتقال غير مشروط أو عملية إرسال إلى السجلات الأساسية، على التوالي. في هذه الحالات، تكون عناوين الانتقال أو عنوان الإرسال إلى السجلات الأساسية هي محتويات جزء معامل العنوان من التعليمات (AOC).

عند إجراء عملية الإرسال إلى المكتب BR، يتم إرسال محتويات AOC إلى واحد أو عدة مكاتب BR في وقت واحد، اعتمادًا على محتويات 15-17 بتة من الأمر. لا يتم إرسال عنوان المرسل في هذه الحالة إلى P1 وRSM.



يمكن استخدام تنفيذ عملية NC كعملية TCU في المقاطعات للانتقال إلى برامج المقاطعة. للقيام بذلك، في البت الخامس من الأمر، تم تعيين سمة الانتقال المبرمج (PNT). في هذه الحالة، تتم قراءة الأمر إلى المعالج من ذاكرة القراءة فقط (ROM) عبر إشارة المقاطعة (ISR). في هذه الحالة، يتم إنشاء عنوان الوصول إلى ROM (عنوان المقاطعة) بواسطة دائرة مقاطعة المعالج.

خصوصية العملية في هذه الحالة هي أن عنوان الإرجاع للمقاطعات ليس عنوان الأمر الذي يلي الأمر بتنسيق FUP، ولكن عنوان الأمر الذي حدثت المقاطعة قبله. تتم معالجة إشارة NPP على النحو التالي. بناءً على هذه الإشارة، تقوم دائرة مقاطعة المعالج بإنشاء عنوان مقاطعة (APr)، يساوي عنوان الخلية الأولى لتعليمة الانتقال بتنسيق FUP(i). يتم نقل هذا العنوان إلى الذاكرة من خلال المحول وتسجيل عنوان ROM. يتم تحديد عناوين المقاطعة بطريقة تجعل عنوان الخلية الأولى للأمر (i) زوجيًا، وعنوان الخلية الثانية (i+1) فرديًا. يتم الحصول على العنوان الثاني عن طريق تغيير الرقم الأقل أهمية (في الأجهزة) دون مشاركة CC من صفر إلى واحد. أثناء عملية قراءة أمر من ذاكرة القراءة فقط (ROM) وتنفيذه، يتم تخزين محتويات SchK (K+1) في السجل P1 الخاص بـ AC، ومحتويات الخلية الثانية للأمر (i+1)، وهو عنوان الانتقال إلى الأمر بالعنوان j، يتم إدخاله في SchK. يتم تقديم طلب إلى ROM بخصوص المحتويات الجديدة لـ CC. وبالتالي، يتم تخزين عنوان التعليمة التالية في وقت الانقطاع (K+1) في السجل P1. بعد معالجة المقاطعة، يتم استخدام هذا العنوان للعودة إلى البرنامج الذي تمت مقاطعته.

33 تفاعل العقد وعناصر المخطط الهيكلي لمعالج SV عند إجراء عمليات التحكم في المعالج والنظام.