توجيهات المجمع Assembler Directives

اقرأ في هذا المقال


توجيهات المجمّع (Assembler directives)، هي توجيهات للمُجمّع لاتخاذ بعض الإجراءات أو تغيير الإعدادات، لا تمثل توجيهات المُجمِّع التعليمات (instructions)، ولا يتم ترجمتها إلى كود الآلة (machine code).

تعريف توجيهات المجمع Assembler Directives:

التعريف: “توجيهات المجمّع هي التعليمات التي يستخدمها المجمّع في وقت تجميع البرنامج المصدر (assembling a source program)، وبشكل أكثر تحديدًا، يمكننا القول، أنّ توجيهات المُجمِّع هي الأوامر أو التعليمات التي تتحكم في تشغيل المُجمِّع”.

توجيهات المجمع هي التعليمات المقدمة للمجمع (assembler)، وليس المعالج (processor)، لأنّ المعالج لا علاقة له بهذه التعليمات، تُعرف هذه التعليمات أيضًا باسم “التعليمات الزائفة” (pseudo-instructions) أو “الشفرة الزائفة” (pseudo-opcode)، الآن السؤال الذي يطرح نفسه ما الذي تفعله توجيهات المجمع على وجه التحديد؟

وظيفة توجيهات المجمع:

  • عرض بداية ونهاية البرنامج المقدم للمجمع.
  • تستخدم لتوفير مواقع تخزين البيانات.
  • تستخدم لإعطاء قيم للمتغيرات.
  • تحديد بداية ونهاية المقاطع (segments)، أو العمليات (procedures) أو وحدات الماكرو (macros) المختلفة من البرنامج.

ما هو المجمع an Assembler؟

نحن نعلم أنّ لغة التجميع (assembly language)، هي لغة أقل تعقيدًا ومناسبة للمبرمجين تُستخدم لبرمجة المعالجات، في برمجة لغة التجميع، يتم تحديد التعليمات في شكل (mnemonics)، أو بالأحرى، في شكل لغة آلة، أي (0 و1)، لكن المعالجات الدقيقة أو وحدات التحكم الدقيقة مصممة خصيصًا بطريقة تمكنهم من فهم لغة الآلة فقط.

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

توجيهات المجمع للمعالج الدقيق 8085:

يتم استخدام توجيهات المجمع الواردة أدناه بواسطة المجمعين للمعالجات الدقيقة (8085 و8086):

DB: Define Byte

يتم استخدام هذا التوجيه لغرض تخصيص وتهيئة بايتات بيانات مفردة أو متعددة:

AREA  DB  30H, 52H, 35H

يحتوي اسم الذاكرة (AREA) على ثلاثة مواقع متتالية، حيث يتم تخزين (30H و52H و35H).

DW: Define Word

يتم استخدامها لتهيئة كلمات بيانات مفردة أو متعددة (16 بت).

MARK  DW 1020H, 4216H

يتم تخزين هاتين المعطيات (16) بت (1020H و4216H)، في (4) مواقع متتالية في الذاكرة (MARK).

END: End of program

يتم استخدام هذا التوجيه في وقت إنهاء البرنامج.

EQU: Equate

يتم استخدامه لتخصيص أي قيمة عددية أو ثابت للمتغير.

DONE  EQU 10H

اسم المتغير (DONE) له قيمة (10H).

MACRO: Represents beginning

يظهر بداية (macro) مع تعريف الاسم والمعلمات.

ENDM: End of macro

يشير (ENDM) إلى إنهاء ال (macro)، حيث يتم تحديد الاسم الكبير (STEP) من قبل المستخدم.

ORG: Origin

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

ORG  1050H

من خلال هذه التعليمات، يعرف المجمّع أنّ العبارات التي تتبع هذه التعليمات، يجب تخزينها في موقع الذاكرة بدءًا من العنوان (1050H).

توجيهات المجمع للمعالج الدقيق 8086:

يتم استخدام توجيهات المجمّع هذه على وجه التحديد بواسطة المعالج الدقيق 8086:

ASSUME: Shows the segment name to the assembler

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

ASSUME CS: _DONE

يحدد هذا التوجيه أنّ تعليمات البرنامج المصدر مخزنة في المقطع المنطقي (_DONE).

DD: Define Double word

تحديد كلمة مزدوجة، يسمح هذا التوجيه بتهيئة بيانات مفردة أو متعددة في شكل كلمات مزدوجة، أي (4) بايت، يستخدم هذا لإعلام المجمّع بأنّ البيانات المخزنة في الذاكرة هي كلمة مزدوجة.

MEM  DD 10D50F7B

DQ: Define Quad words

يتم استخدامه لتهيئة الكلمات الرباعية (8) بايت، إمّا كلمة واحدة أو أكثر، وبذلك يتم إبلاغ المجمع بأنّ البيانات المخزنة في الذاكرة تتكون من أربع كلمات.

DT: Define ten bytes

يتم استخدامه لتخصيص وتهيئة (10) بايت من المتغير.

DUP: Duplicate

يسمح (DUP) بتهيئة مواقع متعددة وتعيين قيم لها، ويسمح بتخزين الأحرف أو المتغيرات المتكررة في مواقع مختلفة.

Book  DB 8 DUP (10H, 20H, 30H, 40H)

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

DWORD: Double word

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

PROC: Procedure

يحدد بداية العملية / روتين فرعي (procedure/subroutine).

FAR

هذا التوجيه هو نوع محدد يستخدمه المجمّع للإعلان عن استدعاء بين (intersegment)، “أي استدعاء من مقطع مختلف”.

NEAR

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

ENDP: End of procedure

يوضح هذا التوجيه إنهاء العملية.

SEGMENT: Beginning of a memory segment

يتم استخدامه لإظهار بداية مقطع من الذاكرة باسم محدد.

ENDS: End of segment

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

EVEN

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

PTR: Pointer

يوضح هذا التوجيه معلومات تتعلق بحجم المعامل.

JMP  BYTE PTR [BX]

يظهر هذا بالقرب من الانتقال المسموح به إلى (BX).

PUBLIC

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

STACK

يوضح هذا التوجيه وجود مقطع مكدس.

STACK [size]

SHORT

يستخدم هذا للإشارة إلى تعليمات القفز لتعيين إزاحة بمقدار بايت واحد.

THIS

يتم استخدامه مع توجيه (EQU) لتعيين (label) على إمّا بايت أو كلمة أو كلمة مزدوجة.


شارك المقالة: