لغة التجميع
المصطلح > لغة التجميع

ويتكون البرنامج المكتوب بلغة التجميع من سلسلة من التعليمات -سهلة الحفظ (Mnemonics) والتي تماثل دفعة من التعليمات التنفيذية (Executable)، وعندما يتم ترجمة هذا الكود عبر المُجمع، يمكن تحميل هذا الكود إلى الذاكرة وتنفيذه.
على سبيل المثال، فإن التعليمة التالية الخاصة بمعالج من نوع x86/IA-32 تخبره بنقل قيمة مكونة من ثمانية بايت إلى المسجل. هذه التعليمة مكتوبة بكود ثنائي يمثل لغة الآلة. الكود الثنائي لهذه التعلية هو 10110 متبوعًا بمعرّف 3 بت للمسجل المراد إستخدامه. المعرف الخاص بالمسجل AL هو 000، لذلك يقوم الكود التالي بتحميل سجل AL بالبيانات 01100001.
10110000 01100001
يمكن جعل كود الكمبيوتر الثنائي السابق أكثر قابلية للقراءة من خلال التعبير عنه بالنظام الست عشري على النحو التالي.
B0 61
ومع قرائتك للسطر التالي تشعر بأن تمثيل الكود عبر لغة التجميع أسهل للقراءة وللتذكر (مثال باستخدام تراكيب شركة إنتل)، انظر استذكار
MOV AL, #61h
وتعني هذه التعليمات ما يلي:
انقل القيمة 61h (والتي تعني بالنظام العشري القيمة "97"؛ حيث تعني اللاحقة "h" النظام الست-عشري؛ وتعني علامة الهاش "#" أن يتم نقل القيمة 97 ولا تعني أن يتم نقل القيمة المخزنة في عنوان الذاكرة رقم 97) إلى سجل المعالج ذو الاسم "AL".
الأمر "mov" يكتب بكود التشغيل بالشكل 1011، ويقوم بنقل القيمة المذكورة بمعامل Operand الأمر الثاني، إلى السجل المذكور عبر المعامل الأول. وقد اختار «مصمم مجموعة التعليمات» تلك الحروف الثلاثة mov لتمثيل الأمر، مما يجعل الأمر سهلا على المبرمج لتذكر واستخدام الأمر. ويتم الفصل بين مجموعة معامل (برمجة حاسوب)  والمعطيات التي تتبع شفرة التشغيل عبر فاصلة "،"؛ إن ما سبق هو نموذج جيد لجملة من جمل لغة التجميع.
وأثناء الممارسة يقوم العديد من المبرمجين بإسقاط الكلمة Mnemonic (أمر سهل التذكر) وإطلاق وصف «كود تشغيلي» Opcode على اللفظة "mov"، وذلك خطأ تقني بكل تأكيد. فعندما يفعلون ذلك، فهم يشيرون إلى الكود الثنائي والذي تمثله لغة التجميع. ولتوضيح الأمر بشكل آخر، إن الأمر سهل التذكر مثل الأمر mov ليس كودا تشغيليا Opcode، لكنه يمثل أو يرمز إلى الكود التشغيلي، لذلك فعندما يشير أحدهم إلى «الكود التشغيلي للأمر mov» فهو يقصد إلى الإشارة للكود التشغيلي الثنائي ولا يشير إلى الأمر المكتوب بلغة التجميع. وحاليا، يوجد عدد محدود من المبرمجين الذين يحتاجون للتعامل مع النماذج الثنائية التي تمثل كود التشغيل الخاص بتعليمات معينة، فهذا التمييز لم يعد يحتاجه أحد بين المبرمجين -لم تعد عملية البرمجة التي تطورت إمكانياتها تحتاجه-، لكنه مطلوبا جدا في أوساط مصممي المعالجات Processor Designers.
يمكن أن يكون بناء جملة MOV أكثر تعقيدًا كما تظهر الأمثلة التالية
MOV EAX, [EBX] ; Move the 4 bytes in memory at the address contained in EBX into EAX
MOV [ESI+EAX], CL ; Move the contents of CL into the byte at address ESI+EAX
MOV DS, DX ; Move the contents of DX into segment register DS
وتُحَوَّل لغة التجميع إلى لغة الآلة عبر المُجمع، وتتم العملية العكسية عبر برنامج يدعى المفكك. وبخلاف اللغات عالية المستوى، فدائما ما يكون هناك توافق أو تناظر بين التعليمات البسيطة المكتوبة بلغة التجميع وبين التعليمات المكتوبة بلغة الآلة. إلا أنه، وفي بعض الحالات، يمكن للمجمع أن يخرج تعلميات من نوع Pseudoinstructions، والتي يتم تمثيلها عبر عدة تعليمات بلغة الآلة، من أجل القيام بوظائف يشيع الاحتياج لها. على سبيل المثال، بفرض أن هناك آلة ينقصها الأمر Branch-if-greater-or-equal «انتقل لمكان آخر إذا ساوت القيمة x أو زادت عن x» في مجموعة أوامر المُجمع الخاص بها، يمكن لحل هذه المشكلة، أن يقوم المُجمع بتوفير تعليمات Pseudoinstructions تجمع بين الأمرين "Set if less than" و"branch if zero" -الأمر الأخير يعمل مع ناتج الأوامر التي تسبقه-. وتوفر معظم المُجمعات ذات «المميزات الكاملة» Full-Featured، لغة ماكرو ثرية (والتي يتم مناقشتها أدناه) يتم استخدامها من قبل الشركات Vendors والمبرمجين لإنتاج كود وتسلسل بيانات أكثر تعقيدا.
غني عن الذكر، أن كل بناء حاسوبي وكل معالج له لغة الآلة الخاصة به. وعلى هذا المستوى، تكون كل تعليمة ممثلة بشكل بسيط بحيث يتم تنفيذها من خلال عدد صغير نسبيا من الدوائر الإلكترونية Electronic Circuits. وتختلف أجهزة الكمبيوتر باختلاف نوع وعدد العمليات التي تدعمها. على سبيل المثال، فإن آلة جديده من نوع 64 بت تتكون من نوع مختلف من الدوائر التي تمتلكها آلة من نوع 32 بت. وقد يختلفان أيضا في أحجام وأعداد المسجلات في كل منهما، وقد يختلفان أيضا في تمثيل البيانات داخل مخازن البيانات -المخازن مثل: الذاكرة والمسجلات-. وفي حين أن معظم أجهزة الكمبيوتر التي تستخدم في الأغراض العامة قادرة على تنفيذ نفس الوظائف، فإن طريقة أداء كل جهاز تختلف عن بقية الأجهزة؛ وتعكس لغات التجميع الخاصة بكل منهم هذا الاختلاف.
وقد تحتوي مجموعة واحدة من أوامر لغة التجميع "Instruction Set" مجموعات متعددة من التراكيب اللغوية التي تستخدم في كتابة الأوامر Mnemonics. وفي مثل هذه الحالات، فإن المجموعة الأكثر استخداما هي تلك التي توفرها الشركة المصنعة -للنظام الحاسوبي- وتستخدمها في وثائق منتجها Documentation.