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

أوامر لغة التجميع (محاضرة)

خطة المحاضرة

1. المجموعات الرئيسية للعمليات.

بنتيوم.

1. المجموعات الرئيسية للعمليات

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

عمليات الشحن

عمليات حسابية،

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

عمليات التحول

عمليات المقارنة والاختبار

عمليات البت

عمليات إدارة البرنامج؛

عمليات التحكم بالمعالج.

2. رموز تذكيرية لأوامر المعالج بنتيوم

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

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

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

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

يمكن إجراء عمليات الضرب والقسمة على الأرقام الموقعة (commandsأنا مول، أنا DIV ) أو غير موقعة (commands مول، ديف أحد المعاملات موجود دائمًا في السجل، ويمكن أن يكون الثاني في السجل، أو في خلية ذاكرة، أو أن يكون معاملًا فوريًا. نتيجة العملية موجودة في السجل. عند الضرب (الأوامرمول , إيمول ) والنتيجة هي بت مزدوج، حيث يتم استخدام سجلين. عند التقسيم (الأوامرDIV , IDIV ) كأرباح، يتم استخدام معامل ثنائي البت، ويتم وضعه في سجلين، ونتيجة لذلك، تتم كتابة الحاصل والباقي في سجلين.

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

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

أوامر المقارنة والاختبار . عادة ما تتم مقارنة المعاملات باستخدام الأمرCMP ، الذي يطرح المعاملات ويحدد قيم الميزات ن، ض، الخامس، جفي سجل الحالة وفقا للنتيجة التي تم الحصول عليها. وفي هذه الحالة لا يتم حفظ نتيجة الطرح، ولا تتغير قيم المعاملات. يتيح لنا التحليل اللاحق لقيم الميزة التي تم الحصول عليها تحديد القيمة النسبية (>،<, =) операндов со знаком или без знака. Использование различных способов адресации позволяет производит сравнение содержимого двух регистров, регистра и ячейки памяти, непосредственно заданного операнда с содержимым регистра или ячейки памяти.

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

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

تطبق أوامر هذه المجموعة خيارات مختلفة لتغيير البت الذي يتم اختباره بي تي يحافظ على قيمة هذا البت دون تغيير.Command ب ت س الاختبار اللاحق يحدد القيمة مليار=1، والأمر ب ت ج - معنى مليار=0.Team ب ت ج يعكس قيمة البت bn بعد اختباره.

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

- أوامر نقل السيطرة غير المشروطة؛

- أوامر القفز المشروط؛

- فرق لتنظيم دورات البرنامج؛

- أوامر المقاطعة؛

- أوامر لتغيير السمات.

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

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

توفر أوامر التحكم في الميزات إمكانية الكتابة - قراءة محتويات سجل الحالة الذي يتم تخزين الميزات فيه، بالإضافة إلى تغيير قيم الميزات الفردية. على سبيل المثال، تقوم معالجات Pentium بتنفيذ الأوامر لاهف و SAHF الذي يقوم بتحميل البايت المنخفض الذي يحتوي على العلامات من سجل الحالة إفلاجإلى البايت المنخفض للتسجيل إياكسوالحشو البايت المنخفض الأعلاممن التسجيل إي أX.. فرق CLC، شركة الاتصالات السعوديةتنفيذ ضبط قيم علامة النقل CF=0، CF=1، والأمر سي إم سييؤدي إلى عكس قيمة هذه السمة.بما أن السمات تحدد تدفق تنفيذ البرنامج أثناء التحولات الشرطية، فإن أوامر تغيير السمات تُستخدم عادةً للتحكم في البرنامج.

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

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

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

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

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

يقوم عدد من المعالجات الحديثة بتنفيذ معالجة جماعية لعدة أعداد صحيحة أو أرقامج "النقطة العائمة" باستخدام أمر واحد وفقًا للمبدأ SIMD ("تعليمات واحدة - بيانات متعددة" ") - "أمر واحد - الكثير من البيانات." يؤدي التنفيذ المتزامن للعمليات على معاملات متعددة إلى تحسين أداء المعالج بشكل كبير عند العمل مع بيانات الفيديو والصوت. تُستخدم هذه العمليات على نطاق واسع لمعالجة الصور والإشارات الصوتية والتطبيقات الأخرى. ولتنفيذ هذه العمليات، تم إدخال كتل خاصة في المعالجات التي تنفذ مجموعات التعليمات المقابلة، والتي توجد في أنواع مختلفة من المعالجات (بنتيوم, أثلون) حصلت على الاسمMMX (“ ميلتي- امتداد الوسائط ") - امتداد الوسائط المتعددة،SSE("امتداد بث SIMD") - بث SIMD - امتداد، “3 دامتداد- التوسع ثلاثي الأبعاد.

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

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

هيكل أمر لغة التجميع: يخبر أمر المجمع المترجم بالإجراء الذي يجب أن يقوم به المعالج الدقيق. توجيهات التجميع هي معلمات محددة في نص البرنامج والتي تؤثر على عملية التجميع أو خصائص ملف الإخراج. يحدد المعامل القيمة الأولية للبيانات (في مقطع البيانات) أو العناصر التي يتم تنفيذ إجراء الأمر عليها (في مقطع التعليمات البرمجية). قد تحتوي التعليمات على معامل واحد أو اثنين، أو قد لا تحتوي على معاملات. يتم تحديد عدد المعاملات ضمنيًا بواسطة رمز التعليمات. إذا كان الأمر أو التوجيه يحتاج إلى الاستمرار في السطر التالي، فسيتم استخدام حرف الخط المائل العكسي: "" . بشكل افتراضي، لا يميز المجمّع بين الأحرف الكبيرة والصغيرة عند كتابة الأوامر والتوجيهات. أمثلة على التوجيهات والأوامر Count db 1 ; الاسم، التوجيه، معامل واحد mov eax، 0 ؛ الأمر، معاملان

المعرفات هي تسلسلات من الأحرف الصالحة المستخدمة للإشارة إلى أسماء المتغيرات وأسماء التصنيفات. قد يتكون المعرف من واحد أو أكثر من الأحرف التالية: جميع حروف الأبجدية اللاتينية؛ الأرقام من 0 إلى 9؛ الأحرف الخاصة: _، @، $، ؟ . يمكن استخدام النقطة كحرف أول في التسمية. لا يمكن استخدام أسماء المجمعات المحجوزة (التوجيهات وعوامل التشغيل وأسماء الأوامر) كمعرفات. يجب أن يكون الحرف الأول للمعرف حرفًا أو حرفًا خاصًا. الحد الأقصى لطوليحتوي المعرف على 255 حرفًا، لكن المترجم يقبل أول 32 حرفًا ويتجاهل الباقي. يجب أن تنتهي كافة التسميات المكتوبة على سطر لا يحتوي على توجيه المجمّع بنقطتين: ". ليس من الضروري أن تبدأ التسمية والأمر (التوجيه) والمعامل في أي موضع معين في السطر. يوصى بكتابتها في عمود لتسهيل قراءة البرنامج.

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

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

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

نماذج الذاكرة قبل الإعلان عن المقاطع، تحتاج إلى تحديد نموذج الذاكرة باستخدام التوجيه. MODEL modifier Memory_model، communication_convention، OS_type، stack_parameter نماذج ذاكرة لغة التجميع الأساسية: نموذج الذاكرة معالجة التعليمات البرمجية معالجة البيانات نظام التشغيل تشذير التعليمات البرمجية والبيانات TINY NEAR MS-DOS مقبول صغير NEAR MS-DOS، Windows لا MEDIUM FAR NEAR MS-DOS، Windows لا COMPACT NEAR FAR MS-DOS، Windows No LARGE FAR MS-DOS، Windows No HUGE FAR MS-DOS، Windows No NEAR Windows 2000، Windows XP، Windows مقبول FLAT NEAR NT،

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

نماذج الذاكرة يفترض النموذج المسطح تكوين برنامج غير مجزأ ويستخدم فقط في أنظمة التشغيل 32 بت. يشبه هذا النموذج النموذج الصغير من حيث أن البيانات والتعليمات البرمجية موجودة في مقطع واحد، ولكنه 32 بت. تطوير برنامج للنموذج المسطح قبل التوجيه. نموذج مسطح يجب أن يضع أحد التوجيهات : . 386،. 486،. 586 أو. 686. يحدد اختيار توجيه اختيار المعالج مجموعة التعليمات المتاحة عند كتابة البرامج. الحرف p بعد توجيه اختيار المعالج يعني وضع التشغيل المحمي. أصبحت معالجة البيانات والتعليمات البرمجية قريبة، حيث تكون جميع العناوين والمؤشرات 32 بت.

نماذج الذاكرة. MODEL modifier Memory_model, communication_convention, OS_type, stack_parameter يتم استخدام معلمة التعديل لتحديد أنواع المقاطع ويمكن أن تأخذ القيم التالية: استخدم 16 (يتم استخدام مقاطع النموذج المحدد كـ 16 بت) استخدم 32 (يتم استخدام مقاطع النموذج المحدد مثل 32 بت). يتم استخدام المعلمة call_convention لتحديد طريقة تمرير المعلمات عند استدعاء إجراء من لغات أخرى، بما في ذلك اللغات عالية المستوى (C++، Pascal). يمكن أن تأخذ المعلمة القيم التالية: C، BASIC، FORTRAN، PASCAL، SYSCALL، STDCALL.

نماذج الذاكرة. معدّل MODEL، Memory_model، communication_convention، OS_type، stack_parameter المعلمة OS_type هي OS_DOS بشكل افتراضي، وهي القيمة الوحيدة المدعومة حاليًا لهذه المعلمة. تم تعيين المعلمة stack_parameter على: NEARSTACK (سجل SS يساوي DS، وتقع مناطق البيانات والمكدس في نفس الجزء الفعلي) FARSTACK (سجل SS لا يساوي DS، وتقع مناطق البيانات والمكدس في مقاطع فعلية مختلفة). القيمة الافتراضية هي NEARSTACK.

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

مثال على برنامج لا يفعل شيئا. 686 ص. نموذج مسطح، STDCALL. بيانات. بداية الكود: إعادة نهاية البداية. البيانات هي جزء برنامج يحتوي على البيانات. هذا البرنامج لا يستخدم المكدس، وبالتالي فإن القطعة. المكدس مفقود. . CODE هو جزء من البرنامج يحتوي على التعليمات البرمجية. ابدأ - التسمية. END START - نهاية البرنامج ورسالة إلى المترجم مفادها أن تنفيذ البرنامج يجب أن يبدأ بملصق START. يجب أن يحتوي كل برنامج على توجيه END لتحديد النهاية مصدر الرمزالبرامج. يتم تجاهل كافة الأسطر التي تتبع توجيه END، وتخبر التسمية المحددة بعد توجيه END المترجم باسم الوحدة الرئيسية التي يبدأ منها تنفيذ البرنامج. إذا كان البرنامج يحتوي على وحدة واحدة، فيمكن حذف التسمية الموجودة بعد التوجيه END.

مترجمو لغة التجميع المترجم هو برنامج أو أداة تقنية تقوم بتحويل برنامج مقدم بإحدى لغات البرمجة إلى برنامج باللغة الهدف، ويسمى كود الكائن. بالإضافة إلى دعم أساليب تقوية تعليمات الآلة، فإن كل مترجم لديه مجموعته الخاصة من التوجيهات وأدوات الماكرو، والتي غالبًا ما تكون غير متوافقة مع أي شيء آخر. الأنواع الرئيسية لمترجمي لغة التجميع: MASM (Microsoft Assembler)، TASM (Borland Turbo Assembler)، FASM (Flat Assembler) - مجمع متعدد التمريرات يتم توزيعه مجانًا من تأليف Tomasz Gryshtar (بولندي)، NASM (Netwide Assembler) - مجاني تم إنشاء المجمع لـ Intel x architecture 86 بواسطة Simon Tatham مع Julian Hall ويتم تطويره حاليًا بواسطة فريق صغير من المطورين في Source. تشكيل. شبكة.

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="ترجمة برنامج في Microsoft Visual Studio 2005 1) قم بإنشاء مشروع عن طريق تحديد ملف->جديد- > قائمة المشروع و"> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}

Src="https://present5.com/presentation/-29367016_63610977/image-16.jpg" alt="ترجمة البرنامج في Microsoft Visual Studio 2005 2) في شجرة المشروع (عرض->مستكشف الحلول) يضيف"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}

ترجمة البرنامج إلى Microsoft Visual Studio 2005 3) حدد نوع الملف Code C++، ولكن حدد الاسم بالامتداد. أسم:

ترجمة البرنامج إلى Microsoft Visual Studio 2005 5) تعيين معلمات المترجم. انقر بزر الماوس الأيمن فوق قائمة Custom Build Rules في ملف المشروع...

قم بترجمة البرنامج إلى Microsoft Visual Studio 2005 وحدد Microsoft Macro Assembler في النافذة التي تظهر.

ترجمة البرنامج إلى Microsoft Visual Studio 2005 تحقق من الزر الأيمن في الملف hello. asm من قائمة الخصائص وقم بتثبيت عام->الأداة: Microsoft Macro Assembler.

Src="https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt="ترجمة البرنامج في Microsoft Visual Studio 2005 6) قم بتجميع الملف عن طريق تحديد Build->Build hello. prj."> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}

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

يتصل وظائف ويندوز API في ملف المساعدة، يتم تقديم أي وظيفة API كنوع function_name (FA 1، FA 2، FA 3) النوع - نوع قيمة الإرجاع؛ FAx – قائمة الوسائط الرسمية بالترتيب الذي تظهر به، على سبيل المثال، int message. Box(HWND h.Wnd, LPCTSTR lp.Text, LPCTSTR lp.Caption, UINT u.Type); هذه الوظيفةيعرض نافذة بها رسالة وزر (أو أزرار) خروج. معنى المعلمات: ح. Wnd هو واصف للنافذة التي ستظهر فيها نافذة الرسالة، lp. النص - النص الذي سيظهر في النافذة، LP. تسمية توضيحية - نص في عنوان النافذة، u. النوع - نوع النافذة، على وجه الخصوص، يمكنك تحديد عدد أزرار الخروج.

استدعاء وظائف الرسائل الخاصة بـ Windows API int. Box(HWND h.Wnd, LPCTSTR lp.Text, LPCTSTR lp.Caption, UINT u.Type); جميع معلمات دالة API تقريبًا هي في الواقع أعداد صحيحة 32 بت: HWND هو عدد صحيح 32 بت، LPCTSTR هو مؤشر 32 بت إلى سلسلة، UINT هو عدد صحيح 32 بت. غالبًا ما تتم إضافة اللاحقة "A" إلى اسم الوظيفة للانتقال إلى الإصدارات الأحدث من الوظيفة.

استدعاء وظائف الرسائل الخاصة بـ Windows API int. Box(HWND h.Wnd, LPCTSTR lp.Text, LPCTSTR lp.Caption, UINT u.Type); عند استخدام MASM، يجب عليك إضافة @N N إلى نهاية الاسم - عدد البايتات التي تشغلها الوسائط التي تم تمريرها على المكدس. بالنسبة لوظائف Win 32 API، يمكن تعريف هذا الرقم على أنه عدد الوسائط n مضروبًا في 4 (البايت في كل وسيطة): N=4*n. لاستدعاء دالة، استخدم تعليمة CALL للمجمّع. في هذه الحالة، يتم تمرير جميع وسائط الدالة إليها عبر المكدس (أمر PUSH). اتجاه تمرير الوسائط: من اليسار إلى اليمين - من الأسفل إلى الأعلى. سيتم دفع الوسيطة u إلى المكدس أولاً. يكتب. سيبدو استدعاء الوظيفة المحددة كما يلي: رسالة الاتصال. صندوق. أ@16

استدعاء وظائف الرسائل الخاصة بـ Windows API int. Box(HWND h.Wnd, LPCTSTR lp.Text, LPCTSTR lp.Caption, UINT u.Type); عادةً ما تكون نتيجة تنفيذ أي وظيفة API عددًا صحيحًا يتم إرجاعه في سجل EAX. يمثل توجيه OFFSET "إزاحة في مقطع"، أو، مترجمًا إلى مصطلحات لغة عالية المستوى، "مؤشر" إلى بداية السطر. يحدد توجيه EQU، مثل #define في SI، ثابتًا. يخبر التوجيه EXTERN المترجم أن الوظيفة أو المعرف خارجي لهذه الوحدة.

مثال على برنامج "مرحبا بالجميع!" . 686 ص. نموذج مسطح، STDCALL. STACK 4096.DATA MB_OK EQU 0 STR 1 DB "برنامجي الأول"، 0 STR 2 DB "مرحبًا بالجميع!"، 0 HW DD ؟ رسالة خارجية. صندوق. أ@16: قريب. بدء الكود: PUSH MB_OK PUSH OFFSET STR 1 PUSH OFFSET STR 2 PUSH HW CALL رسالة. صندوق. A@16 بداية النهاية الخلفية

توجيه INVOKE يتيح لك مترجم لغة MASM أيضًا تبسيط استدعاءات الوظائف باستخدام أداة ماكرو - توجيه INVOKE: دالة INVOKE، المعلمة 1، المعلمة 2، ... ليست هناك حاجة لإضافة @16 إلى استدعاء الوظيفة؛ تتم كتابة المعلمات بالضبط بالترتيب الوارد به في وصف الوظيفة. عن طريق وسائل الماكرو للمترجم، يتم وضع المعلمات على المكدس. لاستخدام توجيه INVOKE، يجب أن يكون لديك وصف للنموذج الأولي للوظيفة باستخدام توجيه PROTO في النموذج: رسالة. صندوق. PROTO: DWORD، : DWORD إذا كان البرنامج يستخدم العديد من وظائف Win 32 API، فمن المستحسن استخدام توجيه التضمين C: masm 32includeuser 32.inc

الهياكل في لغة التجميع

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

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

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

من أجل تحسين سهولة استخدام لغة التجميع، تم أيضًا إدخال نوع البيانات هذا فيها.

أ-بريوري بناء هو نوع بيانات يتكون من عدد ثابت من العناصر من أنواع مختلفة.

لاستخدام الهياكل في البرنامج، يجب عليك تنفيذ ثلاث خطوات:

    تعيين قالب الهيكل .

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

    يُعرِّف مثيل الهيكل .

    تتضمن هذه المرحلة تهيئة متغير محدد ببنية محددة مسبقًا (باستخدام القالب).

    تنظم الوصول إلى عناصر الهيكل .

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

يصف البنية في البرنامج تعني ببساطة الإشارة إلى مخططه أو نمطه؛ لم يتم تخصيص الذاكرة.

لا يمكن اعتبار هذا القالب إلا بمثابة معلومات للمترجم حول موقع الحقول وقيمتها الافتراضية.

يُعرِّف تعني البنية توجيه المترجم إلى تخصيص الذاكرة وتعيين اسم رمزي لمنطقة الذاكرة هذه.

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

وصف قالب الهيكل

يحتوي وصف قالب الهيكل على بناء الجملة التالي:

اسم الهيكل STRUC

انتهى اسم الهيكل

هنا عبارة عن سلسلة من توجيهات وصف البيانات ديسيبل، دو، يدد، دقو dt.

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

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

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

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

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

دعونا نحدد بنية السجل لقاعدة البيانات هذه باستخدام القالب التالي:

تحديد البيانات مع نوع الهيكل

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

[اسم المتغير] Structure_name

    اسم المتغير- معرف متغير من هذا النوع من البنية.

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

    قائمة القيم- قائمة القيم الأولية لعناصر البنية بين قوسين، مفصولة بفواصل.

    مهمته هي أيضا اختيارية.

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

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

    على سبيل المثال: العامل المنتصر.

على سبيل المثال، دعونا نحدد عدة متغيرات بنوع البنية الموضحة أعلاه.

طرق العمل مع الهيكل

تتمثل فكرة إدخال نوع منظم في أي لغة برمجة في دمج متغيرات من أنواع مختلفة في كائن واحد.

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

    عنوان_التعبير- معرف متغير من نوع هيكلي أو تعبير بين قوسين وفقًا لقواعد بناء الجملة الموضحة أدناه (الشكل 1)؛

    Structure_field_name- اسم الحقل من قالب الهيكل.

    وهذا، في الواقع، هو أيضًا عنوان، أو بالأحرى، إزاحة الحقل من بداية البنية.

هكذا المشغل " . "(نقطة) تقيم التعبير

أرز. 5. بناء جملة تعبير العنوان في عامل الوصول إلى حقل البنية

دعونا نوضح باستخدام مثال الهيكل الذي حددناه. عامل بعض التقنيات للعمل مع الهياكل.

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

كن حذرا لأنه نظرا لمبدأ تخزين البيانات "بايت منخفض في عنوان منخفض"سيتم وضع أعلى رقم من العمر آلوالأصغر - في آه.

لإجراء التعديلات، فقط استخدم الأمر xchg آل، آه:

mov ax,word ptr sotr1.age ;in al age sotr1

أو يمكنك القيام بذلك على النحو التالي:

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

ماذا تفعل بالحجم وكيفية تنظيم فهرسة عناصر المصفوفة؟

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

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

على سبيل المثال:

كيفية نسخ حقل من بنية واحدة إلى الحقل المقابل في بنية أخرى؟ أو كيفية نسخ الهيكل بأكمله؟ دعونا نسخ الحقل نامالموظف الثالث في هذا المجال نامالموظف الخامس :

عامل mas_sotr 10 dup()

mov bx، إزاحة mas_sotr

mov si,(اكتب العامل)*2;si=77*2

mov di,(نوع العامل)*4;si=77*4

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

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

ربما يرجع وجود النوعين التاليين من البيانات في اللغة إلى رغبة "ربة المنزل" في استخدام منطقة عمل الطاولة (RAM) بأكبر قدر ممكن من الكفاءة عند تحضير الطعام أو وضع المنتجات (بيانات البرنامج ).

يمكن تمييز الأوامر حسب الغرض (ترد أمثلة لأكواد التشغيل التذكيرية لأوامر مجمع IBM PC بين قوسين):

إجراء العمليات الحسابية (ADD وADC - الجمع والإضافة مع الحمل، SUB وSBB - الطرح والطرح مع الاقتراض، MUL وIMUL - الضرب غير الموقع والموقع، DIV وIDIV - القسمة غير الموقعة والموقعة، CMP - المقارنات وما إلى ذلك)؛

إجراء العمليات المنطقية (OR، AND، NOT، XOR، TEST، وما إلى ذلك)؛

نقل البيانات (MOV - للأمام، XCHG - التبادل، IN - الدخول إلى المعالج الدقيق، OUT - الإخراج من المعالج الدقيق، وما إلى ذلك)؛

ل نقل التحكم (فروع البرنامج: JMP - قفزة غير مشروطة، CALL - استدعاء الإجراء، RET - العودة من الإجراء، J * - القفز المشروط، LOOP - التحكم في الحلقة، وما إلى ذلك)؛

معالجة سلاسل الأحرف (MOVS - عمليات النقل، CMPS - المقارنات، LODS - التحميل، SCAS - عمليات المسح. تُستخدم هذه الأوامر عادةً مع البادئة (معدل التكرار) ​​REP؛

انقطاعات البرنامج (INT - مقاطعات البرامج، INTO - المقاطعة المشروطة عند تجاوز السعة، IRET - العودة من المقاطعة)؛

التحكم في المعالجات الدقيقة (ST* وCL* - ضبط وإعادة ضبط الأعلام، HLT - التوقف، WAIT - الانتظار، NOP - الخمول، وما إلى ذلك).

مع القائمة الكاملةيمكن العثور على أوامر التجميع في الأعمال.

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

ل MOV dst، src - نقل البيانات (نقل - إرسال من src إلى dst).

النقل: بايت واحد (إذا كان src وdst بتنسيق بايت) أو كلمة واحدة (إذا كان src وdst بتنسيق Word) بين السجلات أو بين السجل والذاكرة، ويكتب قيمة مباشرة إلى السجل أو الذاكرة.

يجب أن يكون للمعاملين dst وsrc نفس التنسيق - بايت أو كلمة.

يمكن أن يكون Src من النوع التالي: r (تسجيل) - تسجيل، m (ذاكرة) - ذاكرة، i (مقاومة) - قيمة فورية. يمكن أن يكون التوقيت الصيفي من النوع r، m. لا يمكنك استخدام المعاملات التالية في أمر واحد: rsegm مع i; معاملين من النوع m ومعاملين من النوع rsegm). يمكن أن يكون المعامل i أيضًا تعبيرًا بسيطًا:

موف آكس، (152 + 101 ب) / 15

يتم إجراء تقييم التعبير فقط أثناء الترجمة. لا يغير الأعلام.

l PUSH src - دفع الكلمة إلى المكدس (ادفع - دفع من خلال؛ ادفع إلى المكدس من src). يضع محتويات src - أي سجل 16 بت (بما في ذلك سجل المقاطع) أو خليتي ذاكرة تحتوي على كلمة 16 بت - في الجزء العلوي من المكدس. الأعلام لا تتغير.

l POP dst - قم بإخراج كلمة من المكدس (pop - pop؛ عد من المكدس إلى dst). يزيل كلمة من أعلى المكدس ويضعها في التوقيت الصيفي - أي سجل 16 بت (بما في ذلك سجل المقطع) أو في خليتي ذاكرة. الأعلام لا تتغير.

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

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

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

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

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

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

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

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

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

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

العدد ديسيبل 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.




قمة