طرق العنونة في المعالج الدقيق Addressing Modes

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


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

ما هو وضع العنونة Addressing Mode

وضع العنونة (addressing mode) هو طريقة تحديد معامل التعليمات، تتمثل مهمة المعالج الدقيق في تنفيذ مجموعة من التعليمات المخزنة في الذاكرة لأداء مهمة محددة، تتطلب العمليات ما يلي:

  • المشغل (operator) أو كود التشغيل (opcode) الذي يحدد ما سيتم القيام به.
  • المعاملات التي تحدد البيانات التي سيتم استخدامها في العملية.

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

في المعالج الدقيق، يجب إخبار الجهاز بكيفية جعل المعاملات تؤدي العملية، العنوان الفعلي (effective address)، هو مصطلح يصف عنوان المعامل المخزن في الذاكرة، هناك عدة طرق لتعيين العنوان الفعلي لتلك المعاملات أو الحصول عليها مباشرة من السجل، تُعرف هذه الأساليب بأوضاع العنونة (addressing modes)، الأساليب الأساسية الثلاثة للعنونة هي كالتالي:

  • سجل العناوين (Register addressing).
  • العنونة الفورية (Immediate addressing).
  • عنونة الذاكرة (Memory addressing).

بنية مجموعة التعليمات (instruction set)، هي بنية تحميل / تخزين (Load/Store)، ممّا يعني أنّه يجب تحميل قيم البيانات في سجلات وحدة المعالجة المركزية قبل إجراء العمليات الحسابية أو المنطقية عليها، التعليمات التي تقوم بتحميل قيم البيانات من الذاكرة أو تخزين قيم البيانات في الذاكرة لا يمكنها تغيير القيمة.

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

أنواع طرق العنونة Types of Addressing Modes

سجل العنونة Register Addressing

في وضع العنونة هذا، يحتوي السجل على المعامل (operand)، اعتمادًا على التعليمات، قد يكون السجل هو المعامل الأول أو المعامل الثاني أو كليهما، على سبيل المثال:

MOV DX, TAX_RATE ;Registerin first operand

MOV COUNT, CX ; Register in second operand

MOV EAX, EBX ; Both the operands are in registers

نظرًا لأنّ معالجة البيانات بين السجلات لا تتضمن ذاكرة، فهي توفر أسرع معالجة للبيانات.

العنونة الفورية Immediate Addressing

المعامل الفوري (immediate operand) له قيمة أو تعبير ثابت، عندما تستخدم تعليمة مع مُعاملين عنونة فورية، فقد يكون المعامل الأول عبارة عن سجل أو موقع ذاكرة، ويكون المعامل الثاني ثابتًا فوريًا، يحدد المعامل الأول طول البيانات، على سبيل المثال:

BYTE_VALUE DB 150 ; A byte value is defined

WORD_VALUE DW 300 ; A word value is defined

ADD BYTE_VALUE, 65 ; An immediate operand 65 is added

MOV AX, 45H ; Immediate constant 45H is transferred to AX

عنونة الذاكرة المباشرة Direct Memory Addressing

عند تحديد المعاملات في وضع عنونة الذاكرة، يلزم الوصول المباشر إلى الذاكرة الرئيسية، عادةً إلى مقطع البيانات، تؤدي طريقة المعالجة هذه إلى إبطاء معالجة البيانات، لتحديد الموقع الدقيق للبيانات في الذاكرة، نحتاج إلى عنوان بداية المقطع، والذي يوجد عادةً في سجل (DS) وقيمة الإزاحة، تسمّى قيمة الإزاحة هذه أيضًا “بالعنوان الفعلي” (effective address).

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

ADD BYTE_VALUE, DL ; Adds the register in the memory location

MOV BX, WORD_VALUE ; Operand from the memory is added to register

عنونة الإزاحة المباشرة Direct-Offset Addressing

يستخدم وضع العنونة هذا عوامل التشغيل الحسابية لتعديل العنوان، على سبيل المثال، انظر إلى التعريفات التالية التي تحدد جداول البيانات:

BYTE_TABLE DB 14, 15, 22, 45 ; Tables of bytes

WORD_TABLE DW 134, 345, 564, 123 ; Tables of words

تصل العمليات التالية إلى البيانات من الجداول الموجودة في الذاكرة إلى سجلات:

MOV CL, BYTE_TABLE[2] ; Gets the 3rd element of the BYTE_TABLE

MOV CL, BYTE_TABLE + 2 ; Gets the 3rd element of the BYTE_TABLE

MOV CX, WORD_TABLE[3] ; Gets the 4th element of the WORD_TABLE

MOV CX, WORD_TABLE + 3 ; Gets the 4th element of the WORD_TABLE

عنونة الذاكرة غير المباشرة Indirect Memory Addressing

يستخدم وضع العنونة هذا قدرة الكمبيوتر على العنونة الجزئية: الإزاحة (Segment:Offset)، بشكل عام، يتم استخدام السجلات الأساسية (EBX وEBP) (أو BX وBP) وسجلات الفهرس (DI ،SI)، المشفرة بين قوسين مربعين لمراجع الذاكرة، لهذا الغرض، يتم استخدام العنونة غير المباشرة بشكل عام للمتغيرات التي تحتوي على عدة عناصر مثل المصفوفات، يتم تخزين عنوان بدء المصفوفة في، على سبيل المثال، سجل (EBX)، يوضح مقتطف الشفرة التالي كيفية الوصول إلى عناصر مختلفة من المتغير:

MY_TABLE TIMES 10 DW 0 ; Allocates 10 words (2 bytes) each initialized to 0

MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX

MOV [EBX], 110 ; MY_TABLE[0] = 110

ADD EBX, 2 ; EBX = EBX +2

MOV [EBX], 123 ; MY_TABLE[1] = 123

تعليمات MOV Instruction

لقد استخدمنا بالفعل تعليمات (MOV) المستخدمة لنقل البيانات من مساحة تخزين إلى أخرى، تأخذ تعليمات (MOV) عاملين، صيغة تعليمات (MOV) هي:

MOV destination, source

قد يكون لتعليمات (MOV) أحد الأشكال الخمسة التالية:

MOV register, register

MOV register, immediate

MOV memory, immediate

MOV register, memory

MOV memory, register

يرجى ملاحظة أنّ:

  • يجب أن يكون كلا المعاملين في عملية (MOV) بنفس الحجم.
  • تظل قيمة معامل المصدر دون تغيير.

تعليمات (MOV) تسبب الغموض في بعض الأحيان، على سبيل المثال، انظر إلى العبارات التالية:

MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX

MOV [EBX], 110 ; MY_TABLE[0] = 110

ليس من الواضح ما إذا كنت تريد نقل ما يعادل بايت (byte) أو ما يعادل كلمة (word) مكافئة للرقم (110)، في مثل هذه الحالات، من الحكمة استخدام محدد النوع (type specifier).

المصدر: Addressing Modes: Definition, Types & ExamplesAddressing ModesAssembly - Addressing Modes11.1 Addressing Modes


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