البرنامج بلغة التجميع . الخصائص العامة لنظام أوامر لغة المجمع لجهاز IBM-PC (مجموعة الأوامر الأساسية، الطرق الأساسية لمعالجة المعاملات). هيكل البرنامج في لغة المجمع. أوامر لغة التجميع

معلومات عامةحول لغة التجميع

يمكن للغة التجميع الرمزية أن تقضي إلى حد كبير على عيوب برمجة لغة الآلة.

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

الأسماء الرمزية التي يتم إدخالها عند البرمجة بلغة التجميع عادة ما تعكس دلالات البرنامج، ويعكس اختصار الأوامر وظيفتها الرئيسية. على سبيل المثال: PARAM - المعلمة، TABLE - الجدول، MASK - القناع، ADD - الإضافة، SUB - الطرح، إلخ. إلخ. يسهل على المبرمج أن يتذكر مثل هذه الأسماء.

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

لغات التجميع موجهة نحو الآلة، أي تعتمد على لغة الآلة وبنية المعالج الدقيق المقابل، حيث يتم تعيين اسم رمزي محدد لكل تعليمات للمعالج الدقيق.

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

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

باستخدام لغة التجميع، يمكن للمبرمج ضبط المعلمات التالية:

فن الإستذكار (الاسم الرمزي) لكل أمر في لغة آلة المعالج الدقيق؛

تنسيق قياسي لأسطر برنامج مكتوب بلغة التجميع؛

تنسيق للإشارة بطرق متعددةمتغيرات العنونة والأوامر؛

تنسيق لتحديد ثوابت الأحرف وثوابت الأعداد الصحيحة في أنظمة الأعداد المختلفة؛

الأوامر الزائفة التي تتحكم في عملية تجميع (ترجمة) البرنامج.

في لغة التجميع، تتم كتابة البرنامج سطرًا سطرًا، أي يتم تخصيص سطر واحد لكل أمر.

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

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

يتكون كل أمر للآلة من جزأين:

· غرفة العمليات - تحديد "ما يجب القيام به"؛

· المعامل - تعريف كائنات المعالجة، "ما يجب فعله".

يتكون أمر آلة المعالج الدقيق، المكتوب بلغة التجميع، من سطر واحد بالشكل النحوي التالي:

تسمية الأمر/معامل (معاملات) التوجيه ؛ التعليقات

في هذه الحالة، الحقل المطلوب في السطر هو أمر أو توجيه.

يتم فصل التسمية والأمر/التوجيه والمعاملات (إن وجدت) بمسافة أو حرف علامة تبويب واحد على الأقل.

إذا كان الأمر أو التوجيه يحتاج إلى الاستمرار في السطر التالي، فسيتم استخدام حرف الشرطة المائلة العكسية: \.

بشكل افتراضي، لغة التجميع لا تميز بين الأحرف الكبيرة والصغيرة عند كتابة الأوامر أو التوجيهات.

المخاطبة المباشرة: يتم تحديد العنوان الفعال مباشرة من خلال حقل الإزاحة لتعليمات الجهاز، والذي يمكن أن يكون حجمه 8 أو 16 أو 32 بت.

موف إياكس، المبلغ؛ الفاكس = المبلغ

يستبدل المجمع المبلغ بالعنوان المقابل المخزن في مقطع البيانات (الذي يعالجه سجل ds افتراضيًا) ويضع القيمة المخزنة عند المجموع في سجل eax.

المخاطبة غير المباشرةبدوره لديه الأنواع التالية:

· العنونة الأساسية (التسجيل) غير المباشرة.

· المعالجة الأساسية غير المباشرة (التسجيل) مع الإزاحة.

· معالجة الفهرس غير المباشرة.

· معالجة الفهرس الأساسي غير المباشر.

العنونة الأساسية (التسجيل) غير المباشرة.باستخدام هذا العنونة، يمكن تحديد موقع العنوان الفعال للمعامل في أي من سجلات الأغراض العامة، باستثناء sp/esp وbp/ebp (هذه سجلات محددة للعمل مع مقطع المكدس). من الناحية التركيبية في الأمر، يتم التعبير عن وضع العنونة هذا من خلال تضمين اسم السجل فيه أقواس مربعة.

موف إيكس، ; eax = *esi; *قيمة esi في العنوان esi

مقدمة.

اللغة التي يكتب بها البرنامج الأصلي، مُسَمًّى مدخلاللغة، واللغة التي يتم ترجمتها للتنفيذ بواسطة المعالج هي في أيام العطلةلسان. تسمى عملية تحويل لغة الإدخال إلى لغة الإخراج إذاعة.وبما أن المعالجات قادرة على تنفيذ البرامج بلغة الآلة الثنائية، والتي لا تستخدم في البرمجة، فإن ترجمة جميع البرامج المصدرية ضرورية. معروف بطريقتينالبث: التجميع والتفسير.

في التحويل البرمجيتتم أولاً ترجمة البرنامج المصدر بالكامل إلى برنامج مكافئ في لغة الإخراج يسمى هدفالبرنامج ومن ثم تنفيذه يتم تنفيذ هذه العملية باستخدام خاص برامج,مُسَمًّى مترجم.يُطلق على المترجم الذي تكون لغة الإدخال فيه شكلًا رمزيًا لتمثيل لغة الآلة (الإخراج) للرموز الثنائية المجمع.

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

). يتم استخدام تسلسل الرموز الناتج لأداء الوظائف المخصصة للبرنامج الأصلي.

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

مميزات اللغة.

الملامح الرئيسية للمجمع:

● بدلاً من الرموز الثنائية، تستخدم اللغة أسماء رمزية - فن الإستذكار.على سبيل المثال، بالنسبة لأمر الإضافة (

) يتم استخدام فن الإستذكار

الطرح (

عمليه الضرب (

الأقسام (

إلخ. وتستخدم الأسماء الرمزية أيضًا لعنونة خلايا الذاكرة. للبرمجة بلغة التجميع، بدلًا من الرموز والعناوين الثنائية، ما عليك سوى معرفة الأسماء الرمزية التي يترجمها المجمع إلى رموز ثنائية؛

كل بيان يتوافق أمر آلة واحدة(الكود)، أي أن هناك مراسلات فردية بين أوامر الآلة والمشغلين في برنامج لغة التجميع؛

● اللغة توفر الوصول لجميع الكائناتوالفرق. اللغات عالية المستوى لا تملك هذه القدرة. على سبيل المثال، تسمح لك لغة التجميع بالتحقق من أجزاء تسجيل العلم واللغة عالية المستوى (على سبيل المثال،

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

● لغة التجميع ليست لغة عالمية.كل مجموعة محددة من المعالجات الدقيقة لها مجمعها الخاص. اللغات عالية المستوى ليس لديها هذا العيب.

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

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

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

في معظم البرامج، تكون نسبة صغيرة فقط من إجمالي التعليمات البرمجية مسؤولة عن نسبة كبيرة من وقت تنفيذ البرنامج. عادةً ما يكون 1% من البرنامج مسؤولاً عن 50% من وقت التنفيذ، و10% من البرنامج مسؤولاً عن 90% من وقت التنفيذ. لذلك، لكتابة برنامج معين في الظروف الحقيقية، يتم استخدام كل من لغة التجميع وإحدى اللغات عالية المستوى.

تنسيق المشغل بلغة التجميع.

برنامج لغة التجميع عبارة عن قائمة من الأوامر (العبارات، الجمل)، يشغل كل منها سطرًا منفصلاً ويحتوي على أربعة حقول: حقل التسمية، وحقل العملية، وحقل المعامل، وحقل التعليق. يحتوي كل حقل على عمود منفصل.

حقل التسمية.

تم تخصيص العمود 1 لحقل التسمية، التسمية هي اسم رمزي، أو معرف، عناوينذاكرة. من الضروري حتى تتمكن من:

● إجراء انتقال مشروط أو غير مشروط إلى الأمر؛

● الوصول إلى الموقع حيث يتم تخزين البيانات.

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

في بعض إصدارات لغة التجميع، يتم وضع النقطتين فقط بعد تسميات التعليمات، وليس بعد تسميات البيانات، وقد يقتصر طول التسمية على 6 أو 8 أحرف.

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

حقل كود التشغيل

يحتوي هذا الحقل على الكود التذكيري لأمر أو أمر زائف (انظر أدناه). يتم اختيار رمز تذكير الأمر من قبل مطوري اللغة. بلغة التجميع

تم تحديد ذاكري لتحميل السجل من الذاكرة

)، ولحفظ محتويات السجل في الذاكرة - وسيلة تذكيرية

). في لغات التجميع

لكلا العمليتين يمكنك استخدام نفس الاسم، على التوالي

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

تعتمد أساليب تقوية السجلات أيضًا على إصدار المجمع (الجدول 5.2.1).

حقل المعامل.

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

● البيانات الرقمية،

يتم تقديمها في أنظمة أرقام مختلفة. للإشارة إلى نظام الأرقام المستخدم، يتبع الثابت واحد من حروف لاتينية: في،

وبناء على ذلك، فإن أنظمة الأعداد الثنائية والثمانية والست عشرية والعشرية (

ليس عليك أن تكتبه). إذا كان الرقم الأول من الرقم السداسي العشري هو A، B، C،

ثم تتم إضافة 0 (صفر) ضئيل في المقدمة؛

● رموز سجلات المعالجات الدقيقة الداخلية وخلايا الذاكرة

م (مصادر أو متلقي المعلومات) على شكل الحروف A، B، C،

M أو عناوينهم في أي نظام أرقام (على سبيل المثال، 10B - عنوان التسجيل

في النظام الثنائي)؛

● المعرفات،

لتسجيل أزواج الطائرات،

الحروف الأولى هي ب،

ن؛ لزوج من المجمع وسجل الميزات -

; لعداد البرنامج -

؛ لمؤشر المكدس -

● تسميات تشير إلى عناوين المعاملات أو التعليمات التالية في الشرط

(إذا تحقق الشرط) و التحولات غير المشروطةعلى سبيل المثال، المعامل M1 في الأمر

يعني الحاجة إلى انتقال غير مشروط إلى الأمر، الذي تم تمييز عنوانه في حقل التسمية بالمعرف M1؛

● التعبيرات،

والتي يتم إنشاؤها من خلال ربط البيانات التي تمت مناقشتها أعلاه باستخدام العوامل الحسابية والمنطقية. لاحظ أن طريقة حجز مساحة البيانات تعتمد على إصدار اللغة. مطورو لغة التجميع لـ

تحديد الكلمة)، وأدخلت في وقت لاحق الخيار البديل.

والتي كانت لغة المعالجات منذ البداية

في نسخة اللغة

مستخدم

تحديد ثابت).

تعالج المعالجات معاملات ذات أطوال مختلفة. لتعريفه، اتخذ مطورو المجمع قرارات مختلفة، على سبيل المثال:

سجلات II ذات أطوال مختلفة لها أسماء مختلفة: EAX - لوضع معاملات 32 بت (النوع

); AX - للإصدار 16 بت (النوع

و AN - لـ 8 بت (النوع

● للمعالجات

تتم إضافة اللواحق إلى كل رمز عملية: suffix

للنوع

; اللاحقة ".B" للنوع

يتم استخدام رموز تشغيل مختلفة لمعاملات ذات أطوال مختلفة، على سبيل المثال، لتحميل بايت، نصف كلمة (

) والكلمات في سجل 64 بت باستخدام أكواد التشغيل

على التوالى.

حقل التعليقات.

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

● الفاصلة المنقوطة (؛) في اللغات الخاصة بمعالجات الشركة

علامة تعجب(!) باللغات

يسبق كل سطر تعليق منفصل حرف رئيسي.

الأوامر الزائفة (التوجيهات).

يوجد في لغة التجميع نوعان رئيسيان من الأوامر:

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

أوامر زائفةأو توجيهات,مصممة لخدمة عملية ترجمة البرنامج إلى لغة مجموعة التعليمات البرمجية. كمثال في الجدول. 5.2.2 يوضح بعض الأوامر الزائفة من المجمع

لأجل العائلة

.

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

● كتابة التسلسل المطلوب للأوامر كلما ظهر. ويؤدي هذا النهج إلى زيادة حجم البرنامج؛

● قم بترتيب هذا التسلسل في إجراء (إجراء فرعي) واستدعائه إذا لزم الأمر. هذا الإخراج له عيوبه: في كل مرة يتعين عليك تنفيذ أمر استدعاء إجراء خاص وأمر إرجاع، والذي، إذا كان التسلسل قصيرًا ومستخدمًا بشكل متكرر، يمكن أن يقلل بشكل كبير من سرعة البرنامج.

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

يتميز الماكرو، أو الأمر الكلي، بثلاثة جوانب: التعريف الكلي، والانعكاس الكلي، والامتداد الكلي.

تعريف الماكرو

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

يحتوي تعريف الماكرو على البنية التالية:

قائمة التعبيرات؛ تعريف الماكرو

في البنية المحددة للتعريف الكلي، يمكن التمييز بين ثلاثة أجزاء:

● العنوان

الماكرو، بما في ذلك الاسم

أمر زائف

ومجموعة من المعلمات.

● مميزة بالنقاط جسمدقيق؛

● الفريق

تخرُّج

تعريفات الماكرو.

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

لإعادة تجميع مجموعة الأوامر المحددة، يتم استخدام نداء يتكون من الاسم

أوامر الماكرو وقائمة المعلمات مع القيم الأخرى.

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

) من الماكرو، يستبدله المجمّع بنص الماكرو.

يُطلق على استخدام اسم ماكرو كرمز تشغيل الانعكاس الكلي(استدعاء الماكرو)، واستبداله بنص الماكرو - التوسع الكلي.

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

يحدث توسيع الماكرو أثناء عملية التجميع، وليس أثناء تنفيذ البرنامج. تم تعيين طرق لمعالجة سلاسل الأحرف لـ وسائل الماكرو.

تتم عملية التجميع في تمريرتين:

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

● يقوم الممر الثاني بمعالجة البرنامج الناتج بدون وحدات ماكرو.

وحدات الماكرو مع المعلمات.

للعمل مع تسلسلات متكررة من الأوامر، والتي يمكن أن تأخذ معلماتها قيمًا مختلفة، يتم توفير تعريفات الماكرو:

● مع فِعليالمعلمات التي يتم وضعها في حقل المعامل لاستدعاء الماكرو؛

● مع رَسمِيّحدود. أثناء توسيع الماكرو، يتم استبدال كل معلمة رسمية تظهر في نص الماكرو بالمعلمة الفعلية المقابلة.

باستخدام وحدات الماكرو مع المعلمات.

يحتوي البرنامج 1 على تسلسلين متشابهين من الأوامر، ويختلفان في أن الأول يقوم بتبديل P و

والثانية

يتضمن البرنامج 2 ماكرو بمعلمتين رسميتين P1 وP2. أثناء توسيع الماكرو، يتم استبدال كل حرف P1 داخل نص الماكرو بالمعلمة الفعلية الأولى (P،

)، ويتم استبدال الرمز P2 بالمعلمة الفعلية الثانية (

) من البرنامج رقم 1. في مكالمة الماكرو

تم وضع علامة على البرنامج 2: P،

المعلمة الفعلية الأولى

المعلمة الفعلية الثانية

البرنامج 1

البرنامج 2

MOV EBX، Q، MOV EAX، Pl

موف س، إياكس موف إبكس، P2

موف بي، إي بي إكس موف بي 2، إي إكس

قدرات موسعة.

دعونا نلقي نظرة على بعض ميزات اللغة المتقدمة

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

تم إعلان التسمية محليًا (

) وبفضل الإمكانات المتقدمة، يقوم المجمّع تلقائيًا بإنشاء تسمية مختلفة في كل مرة يتم فيها توسيع الماكرو.

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

إذا كان حجم الكلمة GT 16 M2 ماكرو

يمكن تعريف الماكرو M2 في كلا جزأين البيان

ومع ذلك، يعتمد التعريف على المعالج الذي تم تجميع البرنامج عليه: 16 بت أو 32 بت. إذا لم يتم استدعاء M1، فلن يتم تعريف الماكرو M2 على الإطلاق.

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

حول استخدام وسائل الماكرو في المجمع.

عند استخدام وحدات الماكرو، يجب أن يكون المجمع قادرًا على أداء وظيفتين: حفظ تعريفات الماكروو توسيع التحديات الكلية.

حفظ تعريفات الماكرو.

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

عند مواجهة ماكرو أثناء التجميع أنشئ:

عنصر الجدول الجديدمع اسم الماكرو وعدد المعلمات ومؤشر إلى جدول تعريف ماكرو آخر حيث سيتم تخزين نص الماكرو؛

● القائمة رَسمِيّحدود.

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

التمثيل الداخلي للماكرو

من المثال أعلاه للبرنامج 2 (ص 244) هو:

موف إياكس، موف إبكس، موف موف &

حيث يتم استخدام الفاصلة المنقوطة كحرف إرجاع، ويتم استخدام علامة الضم & كحرف المعلمة الرسمي.

توسيع مكالمات الماكرو.

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

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

مجمع ثنائي المسار.

يتكون البرنامج من عدد من البيانات. لذلك، يبدو أنه عند التجميع، يمكنك استخدام التسلسل التالي من الإجراءات:

● ترجمتها إلى لغة الآلة؛

● نقل رمز الجهاز الناتج إلى ملف، والجزء المقابل من القائمة إلى ملف آخر؛

● كرر الإجراءات المذكورة حتى تتم ترجمة البرنامج بأكمله.

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

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

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

أول إجتياز.

الهدف التمريري الأول- بناء جدول الرموز. كما هو مذكور أعلاه، هناك هدف آخر للتمرير الأول وهو الحفاظ على كافة تعريفات الماكرو وتوسيع المكالمات عند ظهورها. وبالتالي، يحدث كل من تعريف الرمز وتوسيع الماكرو في مسار واحد. يمكن أن يكون الرمز أيضًا ملصق،أو معنى،الذي تم تعيين اسم محدد له باستخدام التوجيه -you :

؛ القيمة - حجم المخزن المؤقت

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

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

جدول أسماء الرموز

يحتوي على عنصر واحد لكل اسم (الجدول 5.2.4). يحتوي كل عنصر من عناصر جدول الأسماء الرمزية على الاسم نفسه (أو مؤشر إليه)، وقيمته الرقمية، وفي بعض الأحيان بعض المعلومات الإضافية، والتي قد تشمل:

● طول حقل البيانات المرتبط بالرمز؛

● بتات إعادة تخصيص الذاكرة (التي تشير إلى ما إذا كانت قيمة الرمز تتغير إذا تم تحميل البرنامج على عنوان مختلف عن العنوان الذي قصده المجمّع)؛

● معلومات حول ما إذا كان يمكن الوصول إلى الرمز من خارج الإجراء.

الأسماء الرمزية هي تسميات. ويمكن تحديدها باستخدام عوامل التشغيل (على سبيل المثال،

جدول التوجيه.

يسرد هذا الجدول جميع التوجيهات، أو الأوامر الزائفة، التي تتم مواجهتها عند تجميع البرنامج.

جدول رموز التشغيل

لكل رمز عملية، يحتوي الجدول على أعمدة منفصلة: تعيين رمز التشغيل، المعامل 1، المعامل 2، القيمة السداسية العشرية لرمز العملية، طول الأمر ونوع الأمر (الجدول 5.2.5). يتم تقسيم رموز التشغيل إلى مجموعات حسب عدد المعاملات ونوعها. يحدد نوع الأمر رقم المجموعة ويحدد الإجراء الذي يتم استدعاؤه لمعالجة كافة الأوامر في تلك المجموعة.

التمريرة الثانية.

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

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

قد يحتوي البرنامج المصدر على أخطاء، على سبيل المثال:

لم يتم تعريف الرمز المحدد أو تم تعريفه أكثر من مرة؛

● تم تمثيل كود التشغيل باسم غير صالح (بسبب خطأ مطبعي)، أو لا يحتوي على معاملات كافية، أو يحتوي على عدد كبير جدًا من المعاملات؛

● لا يوجد مشغل

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

مقالات مخصصة للغة التجميع.

الموضوع 2.5 أساسيات برمجة المعالجات

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

تسمى لغة ترميز الأوامر الرمزية المجمع.

لغة التجميعهي لغة يتوافق فيها كل كلام مع أمر آلة واحد بالضبط.

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

تتميز لغة التجميع بعدة مميزات تميزها عن اللغات عالية المستوى:

1. هذه مراسلات فردية بين عبارات لغة التجميع وتعليمات الآلة.

2. يتمتع مبرمج لغة التجميع بإمكانية الوصول إلى جميع الكائنات والتعليمات الموجودة على الجهاز المستهدف.

إن فهم أساسيات البرمجة باللغات الموجهة للآلة مفيد من أجل:



فهم أفضل لبنية الكمبيوتر الشخصي واستخدام أكثر كفاءة لأجهزة الكمبيوتر؛

تطوير هياكل أكثر عقلانية للخوارزميات لبرامج حل المشكلات التطبيقية؛

القدرة على عرض وتصحيح البرامج القابلة للتنفيذ ذات الامتداد .exe و.com، المجمعة من أي لغة عالية المستوى، في حالة فقدان البرامج المصدر (عن طريق استدعاء البرامج المحددة في مصحح أخطاء برنامج DEBUG وفك عرضها في التجميع لغة)؛

تجميع البرامج لحل المشكلات الأكثر أهمية (البرنامج المكتوب بلغة موجهة نحو الآلة عادة ما يكون أكثر فعالية - أقصر وأسرع بنسبة 30-60 بالمائة من البرامج التي يتم الحصول عليها نتيجة للترجمة من لغات عالية المستوى)

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

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

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

الأرقام هي أعداد صحيحة فقط. هناك:

الأرقام الثنائية تنتهي بالحرف B؛

الأرقام العشرية التي تنتهي بالحرف D؛

الأرقام السداسية العشرية تنتهي بالحرف H.

ذاكرة الوصول العشوائي، والسجلات، وعرض البيانات

بالنسبة لسلسلة معينة من النواب، يتم استخدام لغة برمجة فردية - لغة التجميع.

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

نموذج البرمجياتنظام المعالجات الدقيقة يعتمد على MP KR580VM80

نموذج برنامج MPS وفقًا للشكل 1

ذاكرة منافذ MP

س ز مكيف الهواء ص ج

الصورة 1

من وجهة نظر المبرمج، يحتوي MP KR580VM80 على السجلات التالية التي يمكن الوصول إليها بالبرنامج.

أ- سجل تراكم 8 بت. هذا هو السجل الرئيسي للنائب. أي عملية يتم إجراؤها في ALU تتضمن وضع أحد المعاملات المراد معالجتها في المجمع. عادةً ما يتم أيضًا تخزين نتيجة العملية في ALU في A.

ب، ج، د، ه، ح، ل- سجلات للأغراض العامة ذات 8 بتات (GPR). الذاكرة الداخليةالنائب. مصممة لتخزين المعلومات المعالجة، وكذلك نتائج العملية. عند معالجة الكلمات ذات 16 بت، تكون السجلات أزواجًا من BC، وDE، وHL، ويسمى السجل المزدوج الحرف الأول - B، D، H. في زوج التسجيل، الأعلى هو السجل الأول. يتمتع السجلان H وL بخاصية خاصة، تُستخدم لتخزين البيانات ولتخزين عناوين 16 بت لخلايا ذاكرة الوصول العشوائي (RAM).

فلوريدا- سجل العلم (تسجيل التوقيع) سجل 8 بت يتم فيه تخزين خمس علامات لنتيجة إجراء العمليات الحسابية والمنطقية في MP. تنسيق FL وفقا للصورة

البت C (CY - حمل) - حمل، يتم ضبطه على 1 إذا كان هناك حمل من الترتيب العالي للبايت عند إجراء العمليات الحسابية.

البت P (التكافؤ) – التكافؤ، يتم ضبطه على 1 إذا كان عدد الآحاد في بتات النتيجة زوجيًا.

رقم AC عبارة عن حمل إضافي، مصمم لتخزين قيمة الحمل من رباعيات الترتيب المنخفض للنتيجة.

البت Z (صفر) - اضبط على 1 إذا كانت نتيجة العملية 0.

البت S (علامة) - يتم ضبطه على 1 إذا كانت النتيجة سلبية، وعلى 0 إذا كانت النتيجة إيجابية.

SP- مؤشر المكدس، وهو سجل مكون من 16 بتة، مصمم لتخزين عنوان خلية الذاكرة حيث تم كتابة البايت الأخير الذي تم إدراجه في المكدس.

روبية- عداد البرامج (Program counter) وهو سجل مكون من 16 بت، مصمم لتخزين عنوان التعليمة التالية التي سيتم تنفيذها. تتم زيادة محتويات عداد البرنامج تلقائيًا بمقدار 1 فور جلب بايت التعليمات التالية.

تحتوي منطقة الذاكرة الأولية للعنوان 0000Н – 07FF على برنامج التحكم وبرامج العرض التوضيحي. هذه هي منطقة ROM.

0800 – 0AFF – منطقة العنوان لتسجيل البرامج قيد الدراسة. (كبش).

0В00 – 0ВВ0 - منطقة العنوان لكتابة البيانات. (كبش).

0ВВ0 - عنوان البداية للمكدس. (كبش).

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

تنسيق البيانات وهيكل الأوامر للغة التجميع

ذاكرة MP KR580VM80 عبارة عن مصفوفة من الكلمات ذات 8 بتات تسمى بايتات، ولكل بايت عنوان خاص به مكون من 16 بت، والذي يحدد موقعه في تسلسل خلايا الذاكرة. يمكن لـ MP معالجة 65536 بايت من الذاكرة، والتي يمكن تضمينها في كل من ROM وRAM.

تنسيق البيانات

يتم تخزين البيانات في الذاكرة ككلمات ذات 8 بت:

د7 د6 د5 د4 د3 د2 د1 د0

البت الأقل أهمية هو البت 0، والبت الأكثر أهمية هو البت 7.

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

تنسيق الأوامر

تحتوي أوامر MP KR580VM80 على تنسيق بايت واحد أو اثنين أو ثلاثة بايت. يجب وضع أوامر متعددة البايت باللغات المجاورة. يعتمد تنسيق الأمر على تفاصيل العملية التي يتم تنفيذها.

يحتوي البايت الأول من الأمر على رمز العملية، المكتوب في شكل ذاكري.

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

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

تنسيق الأمر أحادي البايت وفقًا للشكل 2

الشكل 4

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

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


أساليب المعالجة

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

بالنسبة لـ MP KR580VM80، توجد طرق العنونة التالية:

مباشر؛

يسجل؛

غير مباشر؛

مرصوصة.

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

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

يسجل تفترض المعالجة أن المعامل (الإدخال أو الإخراج) موجود في السجل الداخلي لـ MP. تستخدم في الأوامر أحادية البايت

غير مباشر تفترض المعالجة (الضمنية) أن السجل الداخلي لـ MP لا يحتوي على المعامل نفسه، بل عنوانه في الذاكرة.

كومة يفترض العنوان أن الأمر لا يحتوي على عنوان. معالجة خلايا الذاكرة باستخدام محتويات سجل SP 16 بت (مؤشر المكدس).

نظام الأوامر

نظام أوامر MP عبارة عن قائمة كاملة من الإجراءات الأولية التي يستطيع MP القيام بها. يقوم MP الذي يتم التحكم فيه بواسطة هذه الأوامر بإجراءات بسيطة، مثل العمليات الحسابية والمنطقية الأولية، ونقل البيانات، والمقارنة بين قيمتين، وما إلى ذلك. عدد أوامر MP KR580VM80 هو 78 (مع مراعاة التعديلات 244).

يتم تمييز مجموعات الأوامر التالية:

نقل البيانات؛

علم الحساب؛

دعابة الدماغ؛

أوامر القفز؛

أوامر الإدخال/الإخراج والتحكم والمكدس.


الرموز والاختصارات المستخدمة عند وصف الأوامر وتأليف البرامج

رمز تخفيض
ADDR عنوان 16 بت
بيانات بيانات 8 بت
البيانات 16 بيانات 16 بت
ميناء عنوان جهاز الإدخال/الإخراج 8 بت
بايت 2 البايت الثاني من الأمر
بايت 3 البايت الثالث من الأمر
ر، ر1، ر2 أحد السجلات: A، B، C، D، E، H، L
ر.ب. أحد أزواج التسجيل: B - يحدد الزوج BC؛ D - يحدد زوج DE؛ H - يحدد زوج HL
ر.س التسجيل الأول للزوج
ر.ل. التسجيل الثاني للزوج
Λ الضرب المنطقي
الخامس إضافة منطقية
إضافة الوحدة الثانية
م خلية ذاكرة يحدد عنوانها محتويات زوج التسجيل HL، أي M = (HL)

1. بنية الكمبيوتر ……………………………………………………………………………

    1.1. السجلات.

    1.1.1 سجلات الأغراض العامة.

1.1.2. سجلات القطاع

1.1.3 تسجيل العلم

1.2. تنظيم الذاكرة.

1.3. عرض بيانات.

1.3.1 أنواع البيانات

1.3.2 تمثيل الأحرف والسلاسل

2. بيانات البرنامج في المجمع ……………………………

    1. أوامر لغة التجميع

2.2. أوضاع المعالجة وتنسيقات تعليمات الآلة

3. المشغلون الزائفون ………………………………………….

3.1 توجيهات تعريف البيانات

3.2 هيكل برنامج المجمع

3.2.1 قطاعات البرنامج. تولي التوجيه

3.2.3 توجيه التجزئة المبسط

4. تجميع وتأليف البرنامج …………………….

5. أوامر نقل البيانات ………………………………….

    5.1 الأوامر العامة

    5.2 أوامر المكدس

5.3 أوامر الإدخال/الإخراج

5.4 أوامر إعادة توجيه العنوان

5.5 أوامر إعادة توجيه العلم

6. الأوامر الحسابية …………………………………….

    6.1 العمليات الحسابية على الأعداد الصحيحة الثنائية

6.1.1 الجمع والطرح

6.1.2 أوامر زيادة وإنقاص المتلقي بمقدار واحد

6.2 الضرب والقسمة

6.3 تغيير الإشارة

7. العمليات المنطقية ………………………………….

8. التحولات والتحولات الدورية ...........................................

9. عمليات السلسلة ………………………………………….

10. منطق وتنظيم البرامج ……………………………

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

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

10.4 الإجراءات في لغة التجميع

10.5 المقاطعات الداخلية

10.6 برامج النظام

10.6.1.1 قراءة لوحة المفاتيح.

10.6.1.2 عرض الحروف على الشاشة

10.6.1.3 إنهاء البرامج.

10.6.2.1 اختيار أوضاع العرض

11. ذاكرة القرص ……………………………………………….

11.2 جدول توزيع الملفات

11.3 عمليات الإدخال/الإخراج على القرص

11.3.1 كتابة ملف إلى القرص

11.3.1.1 بيانات ASCIIZ

11.3.1.2 رقم الملف

11.3.1.3 إنشاء ملف القرص

11.3.2 قراءة ملف القرص

مقدمة

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

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

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

يناقش الدليل البرمجة بلغة التجميع لأجهزة الكمبيوتر المعتمدة على معالجات Intel الدقيقة.

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

    هندسة الكمبيوتر.

هندسة الكمبيوتر هي تمثيل مجرد لجهاز الكمبيوتر، وهو ما يعكس تنظيمه الهيكلي والدوائري والمنطقي.

تتمتع جميع أجهزة الكمبيوتر الحديثة ببعض الخصائص المعمارية المشتركة والفردية. الخصائص الفردية فريدة لنموذج كمبيوتر معين.

يتضمن مفهوم هندسة الكمبيوتر ما يلي:

    مخطط كتلة الكمبيوتر.

    وسائل وطرق الوصول إلى عناصر المخطط التفصيلي للكمبيوتر؛

    مجموعة وتوافر السجلات؛

    تنظيم وطرق المعالجة؛

    طريقة عرض وتنسيق بيانات الكمبيوتر؛

    مجموعة من تعليمات آلة الكمبيوتر؛

    تنسيقات تعليمات الآلة؛

    معالجة المقاطعة.

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

      السجلات.

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

يتم استخدام سجلات المستخدم من قبل المبرمج لكتابة البرامج. وتشمل هذه السجلات:

    ثمانية سجلات 32 بت (سجلات للأغراض العامة) EAX/AX/AH/AL، EBX/BX/BH/BL، ECX/CX/CH/CL، EDX/DX/DLH/DL، EBP/BP، ESI/SI، إيدي/دي، إسب/سب؛

    ستة سجلات مقطعية ذات 16 بت: CS، DS، SS، ES، FS، GS؛

    سجلات الحالة والتحكم: سجل إشارة EFLAGS/FLAGS وسجل مؤشر أوامر EIP/IP.

تتم الإشارة إلى أجزاء من سجل 32 بت من خلال شرطة مائلة. تشير البادئة E (الموسعة) إلى استخدام سجل 32 بت. للعمل مع البايتات، يتم استخدام السجلات ذات البادئات L (منخفضة) وH(عالية)، على سبيل المثال، AL، CH - للإشارة إلى البايتات المنخفضة والعالية للأجزاء ذات 16 بت من السجلات.

        سجلات الأغراض العامة.

EAX/AX/AH/AL (سجل المجمع) – بطارية. تستخدم في الضرب والقسمة، وفي عمليات الإدخال والإخراج، وفي بعض عمليات السلسلة.

إبكس / بي إكس / بي إتش / بي إل – سجل قاعدة(السجل الأساسي)، يُستخدم غالبًا عند معالجة البيانات في الذاكرة.

ECX/CX/CH/CL – عداد(سجل العد) يستخدم كعداد لعدد تكرارات الحلقة.

إي دي إكس/دي إكس/دي إتش/دي إل – سجل البيانات(سجل البيانات)، يستخدم لتخزين البيانات الوسيطة. في بعض الفرق، استخدامه إلزامي.

تسمح جميع السجلات في هذه المجموعة بالوصول إلى أجزائها "السفلية". يمكن فقط استخدام الأجزاء السفلية المكونة من 16 و8 بت من هذه السجلات للتوجيه الذاتي. البتات الـ 16 العليا من هذه السجلات غير متاحة ككائنات مستقلة.

لدعم أوامر معالجة السلسلة التي تسمح بالمعالجة المتسلسلة لسلاسل العناصر بطول 32 أو 16 أو 8 بت، يتم استخدام ما يلي:

ESI/SI (سجل فهرس المصدر) – فِهرِس مصدر. يحتوي على عنوان العنصر المصدر الحالي.

EDI/DI (سجل فهرس الوجهة) – فِهرِس المتلقي(متلقي). يحتوي على العنوان الحالي في سطر الوجهة.

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

ESP/SP (سجل مؤشر المكدس) – يسجل المؤشر كومة. يحتوي على مؤشر إلى أعلى المكدس في مقطع المكدس الحالي.

EBP/BP (سجل المؤشر الأساسي) – سجل مؤشر قاعدة المكدس. مصممة لتنظيم الوصول العشوائي إلى البيانات داخل المكدس.

1.1.2. سجلات القطاع

يحتوي نموذج برنامج المعالجات الدقيقة على ستة سجلات القطاع: CS، SS، DS، ES، GS، FS. يرجع وجودها إلى التنظيم المحدد واستخدام ذاكرة الوصول العشوائي بواسطة معالجات Intel الدقيقة. تدعم أجهزة المعالج الدقيق التنظيم الهيكلي للبرنامج الذي يتكون من شرائح.للإشارة إلى الأقسام المتوفرة في هذه اللحظةوالمقصود سجلات القطاع. يدعم المعالج الدقيق أنواع المقاطع التالية:

    مقطع الكود.يحتوي على أوامر البرنامج، للوصول إلى هذا المقطع، استخدم سجل CS (تسجيل مقطع الكود) - سجل رمز القطعة. يحتوي على عنوان مقطع تعليمات الآلة الذي يمكن للمعالج الدقيق الوصول إليه.

    شريحة البيانات.يحتوي على البيانات التي يعالجها البرنامج. للوصول إلى هذا المقطع، استخدم سجل DS (تسجيل مقطع البيانات) - سجل بيانات القطاع، الذي يخزن عنوان مقطع بيانات البرنامج الحالي.

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

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

        سجلات التحكم والحالة

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

تسجيل مؤشر تعليمات EIP/IP؛

    سجل العلم EFLAGS/FLAGS.

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

EIP/IP (تسجيل مؤشر التعليمات) – المؤشر فرق. يبلغ عرض سجل EIP/IP 32 بت أو 16 بت ويحتوي على إزاحة التعليمات التالية التي سيتم تنفيذها بالنسبة لمحتويات سجل مقطع CS في مقطع التعليمات الحالي. لا يمكن الوصول إلى هذا السجل مباشرة، ولكن يمكن تغييره باستخدام تعليمات الانتقال.

EFLAGS/FLAGS (تسجيل العلم) – يسجل أعلام. حجم البت 32/16 بت. البتات الفردية من هذا السجل لها غرض وظيفي محدد وتسمى الأعلام. العلم هو البت الذي يأخذ القيمة 1 ("مجموعة العلم") إذا تم استيفاء بعض الشروط، والقيمة 0 ("تم مسح العلم") بخلاف ذلك. الجزء السفلي من هذا السجل يشبه تمامًا سجل FLAGS لـ i8086.

1.1.3 تسجيل العلم

سجل الأعلام هو 32 بت ويسمى EFLAGS (الشكل 1). البتات الفردية من السجل لها غرض وظيفي محدد وتسمى الأعلام. يتم تعيين اسم محدد لكل منهم (ZF، CF، وما إلى ذلك). تمثل البتات الـ 16 السفلية من EFLAGS سجل إشارة FLAGS ذو 16 بت المستخدم عند تنفيذ البرامج المكتوبة للمعالجات الدقيقة i086 وi286.

الشكل 1: تسجيل العلم

تُسمى بعض الأعلام عادةً أعلام الحالة؛ فهي تتغير تلقائيًا عند تنفيذ الأوامر وتسجل خصائص معينة لنتيجتها (على سبيل المثال، ما إذا كانت تساوي صفرًا). الأعلام الأخرى تسمى أعلام الدولة؛ تتغير من البرنامج وتؤثر على السلوك الإضافي للمعالج (على سبيل المثال، تمنع المقاطعات).

أعلام الحالة:

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

OF (علامة التجاوز) - علم الفائض. اضبط على 1 إذا كانت النتيجة، عند إضافة أو طرح الأعداد الصحيحة الموقعة، هي نتيجة تتجاوز القيمة المسموح بها في القيمة المطلقة (فاضت العشرية و"صعدت" إلى رقم الإشارة).

ZF (علامة صفر) - العلم صفر. اضبط على 1 إذا كانت نتيجة الأمر 0.

SF (علم الإشارة) - علَم لافتة. اضبط على 1 إذا كانت العملية على الأرقام الموقعة تؤدي إلى نتيجة سلبية.

PF (علم التكافؤ) - علَم التكافؤ. يساوي 1 إذا كانت نتيجة الأمر التالي تحتوي على عدد زوجي من الأوامر الثنائية. عادة ما يتم أخذها بعين الاعتبار لعمليات الإدخال/الإخراج فقط.

AF (علم الحمل المساعد) - علم حمل إضافي. إصلاح ميزات إجراء العمليات على الأعداد العشرية الثنائية.

أعلام الدولة:

DF (علم الاتجاه) - علم الاتجاه. يضبط اتجاه عرض الخطوط في أوامر الخط: عندما يكون DF=0، يتم عرض الخطوط "للأمام" (من البداية إلى النهاية)، وعندما يكون DF=1 - في الاتجاه المعاكس.

IOPL (مستوى امتياز الإدخال / الإخراج) - مستوى امتياز الإدخال/الإخراج.يُستخدم في الوضع المحمي لتشغيل المعالجات الدقيقة للتحكم في الوصول إلى أوامر الإدخال/الإخراج، اعتمادًا على امتيازات المهمة.

NT (مهمة متداخلة) – علامة تداخل المهمة.يُستخدم في الوضع المحمي لتشغيل المعالجات الدقيقة لتسجيل حقيقة تداخل مهمة واحدة مع مهمة أخرى.

علامة النظام:

إذا (علامة المقاطعة) - علامة المقاطعة. عندما يكون IF=0، يتوقف المعالج عن الاستجابة للمقاطعات الواردة، وعندما يكون IF=1، تتم إزالة حظر المقاطعة.

TF (علم فخ) - علامة التتبع. عندما يكون TF=1، بعد تنفيذ كل أمر، يقوم المعالج بإجراء مقاطعة (مرقمة 1)، والتي يمكن استخدامها عند تصحيح أخطاء البرنامج لتتبعه.

RF (علامة الاستئناف) – استئناف العلم. يستخدم عند معالجة المقاطعات من سجلات التصحيح.

VM (وضع 8086 الافتراضي) – علامة 8086 الافتراضية. 1-المعالج يعمل في الوضع الافتراضي 8086. 0-المعالج يعمل في الوضع الحقيقي أو المحمي.

التيار المتردد (فحص المحاذاة) – علامة التحكم في المحاذاةمصممة للسماح بالتحكم في المحاذاة عند الوصول إلى الذاكرة.

      تنظيم الذاكرة.

تسمى الذاكرة الفعلية التي يمكن للمعالج الدقيق الوصول إليها كبش (أو ذاكرة الوصول العشوائي كبش).ذاكرة الوصول العشوائي (RAM) عبارة عن سلسلة من البايتات التي لها عنوان فريد خاص بها (رقمها)، يسمى بدني.يتراوح نطاق قيم العنوان الفعلي من 0 إلى 4 جيجابايت. آلية إدارة الذاكرة عبارة عن أجهزة بالكامل.

تدعم أجهزة المعالجات الدقيقة عدة نماذج لاستخدام ذاكرة الوصول العشوائي:

    نموذج مجزأ. في هذا النموذج، يتم تقسيم ذاكرة البرامج إلى مناطق ذاكرة متجاورة (مقاطع)، ويمكن للبرنامج نفسه الوصول فقط إلى البيانات الموجودة في هذه المقاطع؛

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

يعتمد استخدام وتنفيذ هذه النماذج على وضع تشغيل المعالج الدقيق:

    وضع العنوان الحقيقي (الوضع الحقيقي).الوضع مشابه لتشغيل المعالج i8086. ضروري لتشغيل البرامج التي تم تطويرها لنماذج المعالجات المبكرة.

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

    الوضع الظاهري 8086في هذا الوضع، يصبح من الممكن تشغيل عدة برامج لـ i8086. في هذه الحالة، يمكن أن تعمل برامج الوضع الحقيقي.

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

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

تشكيل عنوان فعلي في الوضع الحقيقي

في الوضع الحقيقي، يتراوح نطاق التغييرات في العنوان الفعلي من 0 إلى 1 ميجابايت. الحد الأقصى لحجم المقطع هو 64 كيلو بايت. عند الاتصال بشخص معين العنوان الفعلييتم تحديد ذاكرة الوصول العشوائي (RAM) بواسطة عنوان بداية المقطع والإزاحة داخل المقطع. يتم أخذ عنوان بداية المقطع من سجل المقطع المقابل. في هذه الحالة، يحتوي سجل المقطع فقط على 16 بت الأكثر أهمية من العنوان الفعلي لبداية المقطع. يتم الحصول على البتات الأربع المنخفضة المفقودة من عنوان 20 بت عن طريق تحويل قيمة سجل المقطع إلى اليسار بمقدار 4 بتات. يتم تنفيذ عملية التحول في الأجهزة. قيمة 20 بت الناتجة هي العنوان الفعلي الحقيقي المطابق لبداية المقطع. إنه العنوان الفعلييتم تحديده كزوج "مقطع: إزاحة"، حيث "المقطع" هو أول 16 بت من عنوان البداية لمقطع الذاكرة الذي تنتمي إليه الخلية، و"الإزاحة" هو عنوان 16 بت لهذه الخلية، ويتم حسابه من بداية مقطع الذاكرة هذا (القيمة 16 * المقطع + الإزاحة تعطي العنوان المطلق للخلية). على سبيل المثال، إذا قام سجل CS بتخزين القيمة 1234h، فإن زوج العناوين 1234h:507h يحدد عنوانًا مطلقًا يساوي 16*1234h+507h =12340h+507h = 12847h. تتم كتابة هذا الزوج ككلمة مزدوجة، و (أما بالنسبة للأرقام) في شكل "مقلوب": تحتوي الكلمة الأولى على إزاحة، والثانية - مقطع، ويتم تقديم كل كلمة من هذه الكلمات بدورها في شكل شكل "مقلوب". على سبيل المثال، سيتم كتابة الزوج 1234h:5678h بالشكل التالي:| 78 | 56| 34 | 12|.

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

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

يتكون كل أمر للآلة من جزأين:

  • التشغيلية - تحديد "ما يجب القيام به"؛
  • المعامل - تعريف كائنات المعالجة، "ما يجب فعله".

يتكون أمر آلة المعالج الدقيق، المكتوب بلغة التجميع، من سطر واحد بالشكل النحوي التالي:

تسمية الأمر/التوجيه المعامل (المعاملات) ؛ التعليقات

في هذه الحالة، الحقل المطلوب في السطر هو أمر أو توجيه.

يتم فصل التسمية والأمر/التوجيه والمعاملات (إن وجدت) بمسافة أو حرف علامة تبويب واحد على الأقل.

إذا كان الأمر أو التوجيه يحتاج إلى الاستمرار في السطر التالي، فسيتم استخدام حرف الشرطة المائلة العكسية: \.

بشكل افتراضي، لغة التجميع لا تميز بين الأحرف الكبيرة والصغيرة عند كتابة الأوامر أو التوجيهات.

أمثلة على أسطر التعليمات البرمجية:

العدد ديسيبل 1 ؛ الاسم، التوجيه، معامل واحد
موف اكس،0 ؛ الأمر، معاملان
الأسلحة الكيميائية والبيولوجية ; فريق

العلامات

ملصق في لغة التجميع يمكن أن تحتوي على الرموز التالية:

  • جميع حروف الأبجدية اللاتينية.
  • الأرقام من 0 إلى 9؛
  • الأحرف الخاصة: _، @، $، ?.

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

يجب أن يكون الحرف الأول في التسمية حرفًا أو حرفًا خاصًا (وليس رقمًا). الحد الأقصى لطولالعلامات – 31 حرفًا. يجب أن تنتهي كافة التسميات المكتوبة على سطر لا يحتوي على توجيه المجمّع بنقطتين: .

فرق

فريق يخبر المترجم بالإجراء الذي يجب أن يقوم به المعالج الدقيق. في مقطع البيانات، يحدد الأمر (أو التوجيه) حقلاً أو مساحة عمل أو ثابتًا. في مقطع التعليمات البرمجية، يحدد الأمر إجراءً، مثل النقل (mov) أو الإضافة (add).

التوجيهات

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

المعاملات

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

  • لا توجد معاملات ret ;Return
  • معامل واحد بما في ذلك ecx؛ زيادة ecx
  • يضيف المعاملان eax,12؛ أضف 12 إلى eax

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

يمكن أن تكون المعاملات

  • معرفات؛
  • سلاسل من الأحرف محاطة بعلامات اقتباس مفردة أو مزدوجة؛
  • الأعداد الصحيحة في أنظمة الأعداد الثنائية أو الثمانية أو العشرية أو السداسية العشرية.
معرفات

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

قواعد لتسجيل معرفات.

  • يمكن أن يتكون المعرف من حرف واحد أو أكثر.
  • كرموز يمكنك استخدام حروف الأبجدية اللاتينية والأرقام وبعض الأحرف الخاصة: _، ?، $، @.
  • لا يمكن أن يبدأ المعرف بحرف رقمي.
  • يمكن أن يصل طول المعرف إلى 255 حرفًا.
  • يقبل المترجم أول 32 حرفًا من المعرف ويتجاهل الباقي.
تعليقات

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

هيكل برنامج الجمعية

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

مثال على برنامج "لا تفعل شيئًا" بلغة التجميع:

686 ص
.نموذج مسطح، STDCALL
.بيانات
.شفرة
يبدأ:

ريت
نهاية البداية

يحتوي هذا البرنامج على أمر معالج دقيق واحد فقط. هذا الأمر هو RET. يضمن إنهاء البرنامج بشكل صحيح. بشكل عام، يتم استخدام هذا الأمر للخروج من الإجراء.
ويتعلق باقي البرنامج بتشغيل المترجم.
.686P - يُسمح بأوامر الوضع المحمي Pentium 6 (Pentium II). يحدد هذا التوجيه مجموعة تعليمات المجمع المدعومة، مما يشير إلى طراز المعالج. يُعلم الحرف P المشار إليه في نهاية التوجيه المترجم بأن المعالج يعمل في الوضع المحمي.
.MODEL FLAT، stdcall - نموذج الذاكرة المسطحة. يتم استخدام نموذج الذاكرة هذا في غرفة العمليات نظام ويندوز. com.stdcall
.DATA عبارة عن مقطع برنامج يحتوي على بيانات.
.CODE عبارة عن كتلة برنامج تحتوي على تعليمات برمجية.
ابدأ - التسمية. في المجمّع، تلعب العلامات دورًا كبيرًا، وهو ما لا يمكن قوله عن اللغات الحديثة عالية المستوى.
END START - نهاية البرنامج ورسالة للمترجم مفادها أن تنفيذ البرنامج يجب أن يبدأ بملصق START.
يجب أن تحتوي كل وحدة على توجيه END لتحديد النهاية مصدر الرمزالبرامج. يتم تجاهل كافة الأسطر التي تتبع التوجيه END. إذا قمت بحذف التوجيه END، فسيتم إنشاء خطأ.
التسمية المحددة بعد التوجيه END تخبر المترجم باسم الوحدة الرئيسية التي يبدأ منها تنفيذ البرنامج. إذا كان البرنامج يحتوي على وحدة واحدة، فيمكن حذف التسمية الموجودة بعد التوجيه END.




قمة