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

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

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

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

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

على سبيل المثال، نظرنا سابقًا إلى القائمة 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) عند إعداد الطعام أو وضع المنتجات (البرنامج بيانات).

عمل الدورة

بالانضباط " برمجة النظام»

الموضوع رقم 4: "حل المشكلات الإجرائية"

الخيار 2

جامعة ولاية شرق سيبيريا

التكنولوجيا والإدارة

____________________________________________________________________

كلية تكنولوجيا

يمارس

للعمل بالطبع

تأديب:
الموضوع: حل المشكلات المتعلقة بالإجراءات
المؤدي (الممثلون): أرينا ألكساندروفنا غلافينسكايا
الرئيس: دامباييفا سيسيجما فيكتوروفنا
ملخص العمل: دراسة الإجراءات الفرعية في لغة التجميع،
حل المشكلات باستخدام الإجراءات الفرعية
1. الجزء النظري: معلومات أساسية عن لغة التجميع (set
الأوامر، وما إلى ذلك)، تنظيم الإجراءات الفرعية، طرق تمرير المعلمات
في الروتينات الفرعية
2. الجزء العملي: تطوير روتينين فرعيين، أحدهما يحول أي حرف إلى حرف كبير (بما في ذلك الحروف الروسية)، والآخر يحول الحرف إلى حرف صغير.
يحول أي حرف معين إلى أحرف كبيرة، والآخر يحول حرف معين إلى أحرف صغيرة.
تحويل حرف إلى أحرف صغيرة.
المواعيد النهائية للمشروع حسب الجدول الزمني:
1. الجزء النظري - 30% في الأسبوع السابع.
2. الجزء العملي - 70% في الأسبوع الحادي عشر.
3. الحماية - 100% بحلول الأسبوع 14.
متطلبات التصميم:
1. يجب تقديم الحساب والمذكرة التوضيحية لمشروع الدورة
النسخ الإلكترونية والورقية.
2. يجب أن لا يقل حجم التقرير عن 20 صفحة مطبوعة على الآلة الكاتبة باستثناء المرفقات.
3. تم إعداد RPP وفقًا لـ GOST 7.32-91 وتوقيعه من قبل المدير.

مدير العمل __________________

المؤدي __________________

تاريخ المسألة " 26 " سبتمبر 2017 ز.


مقدمة. 2

1.1 معلومات أساسية عن لغة التجميع. 3

1.1.1 مجموعة الأوامر. 4

1.2 تنظيم الإجراءات الفرعية بلغة التجميع. 4

1.3 طرق تمرير المعلمات في الإجراءات الفرعية. 6

1.3.1 تمرير المعلمات من خلال السجلات.. 6

1.3.2 تمرير المعلمات عبر المكدس. 7

2 القسم العملي...9

2.1 بيان المشكلة. 9

2.2 وصف الحل للمشكلة. 9

2.3 اختبار البرنامج... 7

خاتمة. 8

المراجع.. 9


مقدمة

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

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

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

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

أهداف الوظيفة:

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

2. دراسة أنواع عمليات البت، وشكل ومنطق تشغيل التعليمات المنطقية للمجمع؛

3. حل مشكلة فردية تتعلق باستخدام الإجراءات الفرعية في لغة التجميع؛

4.. صياغة استنتاج حول العمل المنجز.

1 القسم النظري

أساسيات لغة التجميع

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

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

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

المميزات والعيوب

· الحد الأدنى من التعليمات البرمجية الزائدة عن الحاجة (استخدام عدد أقل من الأوامر والوصول إلى الذاكرة). ونتيجة لذلك، سرعة عالية و مقاس اصغرالبرامج؛

· كميات كبيرة من التعليمات البرمجية، وعدد كبير من المهام الصغيرة الإضافية؛

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

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

· عدد أقل من المكتبات المتاحة، وتوافقها المنخفض.

· الوصول المباشر إلى الأجهزة: منافذ الإدخال/الإخراج، وسجلات المعالجات الخاصة؛

· أقصى قدر من "الملاءمة" للمنصة المطلوبة (استخدام تعليمات خاصة، ميزات تقنية"غدة")؛

· عدم قابلية النقل إلى منصات أخرى (باستثناء الثنائية المتوافقة).

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

· تعريف البيانات (الثوابت والمتغيرات).

· إدارة تنظيم البرنامج في الذاكرة ومعلمات ملف الإخراج.

· تحديد وضع التشغيل للمترجم.

· جميع أنواع التجريدات (أي عناصر اللغات عالية المستوى) - بدءًا من تصميم الإجراءات والوظائف (لتبسيط تنفيذ نموذج البرمجة الإجرائية) إلى الإنشاءات الشرطية والحلقات (لنموذج البرمجة المنظمة)؛

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

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

أوامر لغة التجميع النموذجية هي:

· أوامر نقل البيانات (وسائل النقل، وما إلى ذلك)

· الأوامر الحسابية(إضافة، فرعية، إيمول، الخ.)

العمليات المنطقية والبتية (أو، و، xor، shr، وما إلى ذلك)

· أوامر التحكم في تنفيذ البرنامج (jmp، loo، ret، إلخ.)

· أوامر المقاطعة (يشار إليها أحياناً بأوامر التحكم): int

· أوامر الإدخال/الإخراج إلى المنافذ (داخل، خارج)

تتميز وحدات التحكم الدقيقة والحواسيب الصغيرة أيضًا بأوامر تقوم بإجراء عمليات التحقق والانتقالات بناءً على الشروط، على سبيل المثال:

· jne - القفز إذا لم يكن متساويا؛

· jge - القفز إذا كان أكبر من أو يساوي .

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

خطة المحاضرة

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، هو التحكم في الأولوية عند الوصول إلى الذاكرة، والذي يتم توفيره عندما يعمل المعالج في وضع العناوين الافتراضية المحمية - "وضع حماية " (وضع حماية). لتنفيذ هذا الوضع، يتم استخدام مجموعات خاصة من الأوامر، والتي تعمل على تنظيم حماية الذاكرة وفقًا لخوارزمية الوصول ذات الأولوية المعتمدة.

مقدمة.

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

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

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

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

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

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

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

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

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

الطرح (

عمليه الضرب (

الأقسام (

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

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

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

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

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

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

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

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

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

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

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

حقل التسمية.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

حقل المعامل.

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

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

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

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

ليس عليك أن تكتبه). إذا كان الرقم الأول من الرقم السداسي العشري هو 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). يتم تقسيم رموز التشغيل إلى مجموعات حسب عدد المعاملات ونوعها. يحدد نوع الأمر رقم المجموعة ويحدد الإجراء الذي يتم استدعاؤه لمعالجة كافة الأوامر في تلك المجموعة.

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

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

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

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

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

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

● لا يوجد مشغل

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

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

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

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

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

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

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

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

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

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

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

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

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

تنسيق لتحديد طرق العنونة المختلفة وخيارات الأوامر؛

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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