ماذا تعرف عن لغة التجميع Assembly language
مـنتديات لــــــــــمة حـــــاسوب الاهـــــلية :: [¦ الأقسام البرمجيه - Forums software ¦] :: قسم لغه التجميع Assembly
صفحة 1 من اصل 1
ماذا تعرف عن لغة التجميع Assembly language
مدخل عام إلى لغة التجميع:
ان معالج الحاسب الألى ( البروسيسور ) لا يفهم غير لغة الألة Machine language المكونة من 1 او 0
فهو لا يفهم لغات البرمجة العليا مثل ال سي أو الجافا أو البيسك High level languages
والاكواد المكتوبة بهذة اللغات قبل أن يتم تنفيذها فهى تمر على مرحلة ال Compiling حتى تتحول الأكواد الى
لغة الألة حتى ينفذها المعالج _
قديما
، قبل ظهور لغات البرمجة العليا _ كان المبرمجين يستخدمون ال 1 0 في
البرمجة _ وكانت عملية غاية في الصعوبة _ فيكون البرنامج طويل جدا وشاق
جداً ولا يستخدم الا لتنفيذ شئ بسيط للغاية
فيكون كود جمع رقمين مثلاً بالشكل التالى ( للتوضيح فقط )
1110011011011001111
وان البروسيسور يكون فاهم أن أول 7 ارقام مثلاً للجمع
ومن بعده اربع أرقام يمثل الرقم الأول ومن ثم الأربع ارقام الاخرين يمثلون الرقم الثانة
ومن ثم ينفذ العملية
فتم ابتداع لغة التجميع بمعنى اننا ينجمع كل مجموعة من الارقام 111001 مثلاً
ونعبر عنها ب opcode
add مثلاً بلغة قريبة من لغة البشر _ونجمع 1011 ونعبر عنها بالنظام السادس عشر فتكون B
وهكذا _ تحولت البرمجة من لغة الألة الصعبة جداااااا الى لغة التجميع أو الأسمبلى _
وفيها يتم التعامل مع البروسيسور مباشرةً فيجب أن نعرف ونفهم ازاى البروسيسور شغال _
وايه الريجسترات اللى بيتحتوى عليها البروسيورابأسمائها وهكذا ،
ومن مزاياها أسهل من لغة الألة _ أسرع من لغات البرمجة العليا
عيوبها أصعب من لغات البرمجة العليا _ محتاجة مبرمج يكون فاهم البروسيسور اللى بيتعامل معاها كويس قوووى
كما يمكنك ملاحظته، إنها اللغة البرمجية الأكثر قربا إلى المعالج (إلا في حالة قدرتك على البرمجة بلغة الآلة نفسها).
سؤال
قد يتبادر إلى ذهنك: فيم تستعمل؟ الأهمية الأولى تتمثل في السرعة، حيث
أنها اللغة التي بفضلها يمكننا تحقيق البرامج الأكثر سرعة، وخاصة في ميدان
الرسومات.
ثانيا، يمكنك الوصول إلى مقاطعات الدوس (interruptions)، والتي تسمح بالوصول المباشر إلى العتاد، كالفأرة أو الشاشة أو حتى بطاقة الفيديو. لأن المترجم (compiler)
لا يعمل إلا على ترجمة البرنامج المكتوب بلغة يفهمها الإنسان إلى لغة
التجميع، وهذه العملية يمكن القيام بها يدويا بعد تدريب طويل في هذا
الميدان. كما يتيح لنا التجميع إمكانية معرفة ما يتوفر عليه ملفنا الثنائي
(ملف تنفيذي .exe أو .com في بيئة مايكروسفت).
بعض المتمرسين في
البرمجة وخاصة القراصنة، لا يستخدمون إلا التجميع في برامجهم، والسبب هو
إنجاز برامج سريعة وصغيرة، وفي نفس الوقت تحقيق مرادهم من خلال قرصنة
البرامج أو ببرمجة ما يرفضه المترجم كالفيروسات.
المختصون في البرمجة لا ينصحون أبدا بأن يقوم المبرمج بإنجاز برنامجه 100% بلغة التجميع،
لأن الكود سيفقد مرونته وتكثر أخطاءه، مما يفقد السيطرة على برنامج يتكون
من آلاف الأسطر، على اعتبار أن كل تعليمة تقع في سطر واحد. وإنما ينصح
باستخدام التجميع لتحسين أداء بعض الدوال أو الإجراءات في لغة البرمجة التي
تعتمدها (السي، الباسكال ...)، والتي تحتاج لسرعة قصوى، سواء لدوال تطلب
لمرات عديدة، أو تلك المسؤولة عن القيام بوظائف معينة، كرسم خط، أو نسخ
قطاع كامل من الذاكرة...الخ.
معجم التجميع:
المصرف:
هو برنامج يقوم بتحويل كود مصدري (ملف نصي، أما للتجميع، فالملف يكون ذو
توسع .asm) إلى كود الآلة، يعني إنشاء ملف ثنائي (ملف ذو توسع -امتداد-
.obj أو .exe أو .com).
الست عشري (Hexadecimal): في نظام العد
المتداول بين الناس، نستعمل الأرقام العربية، والمحصورة بين 0 والـ 9، إذن
ما مجموعه 10 أرقام، والرقم الأكبر هو 9 (10-1). نقول إذن عن هذا النظام
أنه نظام عشري decimal. فالعدد 451 يمكننا تفكيكه على شكل:
( 4×100) + (5×10) + (1×1)= 4×10 2 + 5×10 1 + 1×10 0.
النظام
الست عشري ينتهي عند 16، والسبب الذي دفع إلى ذلك هو تمثيل النظام الثنائي
بأقل عدد ممكن من الأرقام. فكما نعلم جميعا، فالنظام الثنائي يتكون من
رقمين فقط، وهما الـ 0 والـ 1، ولتكوين أي رقم آخر، فإننا نكتب متوالية من
الأصفار والوحدات على شاكلة 01101001 وهذا الرقم يمثل 105 في نظام عدنا
الذي نستعمله يوميا، ولكن لتمثيل أعداد كبيرة نحتاج إلى أصفار ووحدات
كثيرة، مما يسبب العديد من الأخطاء ويضيع الوقت، ويعقد الفهم، لهذا جاء دور
النظام الست عشري ليحل الإشكال، ويعوض كل أربعة أرقام ثنائية برقم ست عشري
واحد.
01101001 = 1001 و 0110 = 9 و 6 = 69 في النظام الست عشري.
النظام
الست عشري يبدأ من الـ 0 وينتهي عند الـ 15، ولكن الأرقام الستة الأخيرة
(من 10 إلى 15) تتكون من وحدتين، وهذا ما سيخلط الأمور، لهذا تم تعويضها
بحروف،
ان معالج الحاسب الألى ( البروسيسور ) لا يفهم غير لغة الألة Machine language المكونة من 1 او 0
فهو لا يفهم لغات البرمجة العليا مثل ال سي أو الجافا أو البيسك High level languages
والاكواد المكتوبة بهذة اللغات قبل أن يتم تنفيذها فهى تمر على مرحلة ال Compiling حتى تتحول الأكواد الى
لغة الألة حتى ينفذها المعالج _
قديما
، قبل ظهور لغات البرمجة العليا _ كان المبرمجين يستخدمون ال 1 0 في
البرمجة _ وكانت عملية غاية في الصعوبة _ فيكون البرنامج طويل جدا وشاق
جداً ولا يستخدم الا لتنفيذ شئ بسيط للغاية
فيكون كود جمع رقمين مثلاً بالشكل التالى ( للتوضيح فقط )
1110011011011001111
وان البروسيسور يكون فاهم أن أول 7 ارقام مثلاً للجمع
ومن بعده اربع أرقام يمثل الرقم الأول ومن ثم الأربع ارقام الاخرين يمثلون الرقم الثانة
ومن ثم ينفذ العملية
فتم ابتداع لغة التجميع بمعنى اننا ينجمع كل مجموعة من الارقام 111001 مثلاً
ونعبر عنها ب opcode
add مثلاً بلغة قريبة من لغة البشر _ونجمع 1011 ونعبر عنها بالنظام السادس عشر فتكون B
وهكذا _ تحولت البرمجة من لغة الألة الصعبة جداااااا الى لغة التجميع أو الأسمبلى _
وفيها يتم التعامل مع البروسيسور مباشرةً فيجب أن نعرف ونفهم ازاى البروسيسور شغال _
وايه الريجسترات اللى بيتحتوى عليها البروسيورابأسمائها وهكذا ،
ومن مزاياها أسهل من لغة الألة _ أسرع من لغات البرمجة العليا
عيوبها أصعب من لغات البرمجة العليا _ محتاجة مبرمج يكون فاهم البروسيسور اللى بيتعامل معاها كويس قوووى
كما يمكنك ملاحظته، إنها اللغة البرمجية الأكثر قربا إلى المعالج (إلا في حالة قدرتك على البرمجة بلغة الآلة نفسها).
سؤال
قد يتبادر إلى ذهنك: فيم تستعمل؟ الأهمية الأولى تتمثل في السرعة، حيث
أنها اللغة التي بفضلها يمكننا تحقيق البرامج الأكثر سرعة، وخاصة في ميدان
الرسومات.
ثانيا، يمكنك الوصول إلى مقاطعات الدوس (interruptions)، والتي تسمح بالوصول المباشر إلى العتاد، كالفأرة أو الشاشة أو حتى بطاقة الفيديو. لأن المترجم (compiler)
لا يعمل إلا على ترجمة البرنامج المكتوب بلغة يفهمها الإنسان إلى لغة
التجميع، وهذه العملية يمكن القيام بها يدويا بعد تدريب طويل في هذا
الميدان. كما يتيح لنا التجميع إمكانية معرفة ما يتوفر عليه ملفنا الثنائي
(ملف تنفيذي .exe أو .com في بيئة مايكروسفت).
بعض المتمرسين في
البرمجة وخاصة القراصنة، لا يستخدمون إلا التجميع في برامجهم، والسبب هو
إنجاز برامج سريعة وصغيرة، وفي نفس الوقت تحقيق مرادهم من خلال قرصنة
البرامج أو ببرمجة ما يرفضه المترجم كالفيروسات.
المختصون في البرمجة لا ينصحون أبدا بأن يقوم المبرمج بإنجاز برنامجه 100% بلغة التجميع،
لأن الكود سيفقد مرونته وتكثر أخطاءه، مما يفقد السيطرة على برنامج يتكون
من آلاف الأسطر، على اعتبار أن كل تعليمة تقع في سطر واحد. وإنما ينصح
باستخدام التجميع لتحسين أداء بعض الدوال أو الإجراءات في لغة البرمجة التي
تعتمدها (السي، الباسكال ...)، والتي تحتاج لسرعة قصوى، سواء لدوال تطلب
لمرات عديدة، أو تلك المسؤولة عن القيام بوظائف معينة، كرسم خط، أو نسخ
قطاع كامل من الذاكرة...الخ.
معجم التجميع:
المصرف:
هو برنامج يقوم بتحويل كود مصدري (ملف نصي، أما للتجميع، فالملف يكون ذو
توسع .asm) إلى كود الآلة، يعني إنشاء ملف ثنائي (ملف ذو توسع -امتداد-
.obj أو .exe أو .com).
الست عشري (Hexadecimal): في نظام العد
المتداول بين الناس، نستعمل الأرقام العربية، والمحصورة بين 0 والـ 9، إذن
ما مجموعه 10 أرقام، والرقم الأكبر هو 9 (10-1). نقول إذن عن هذا النظام
أنه نظام عشري decimal. فالعدد 451 يمكننا تفكيكه على شكل:
( 4×100) + (5×10) + (1×1)= 4×10 2 + 5×10 1 + 1×10 0.
النظام
الست عشري ينتهي عند 16، والسبب الذي دفع إلى ذلك هو تمثيل النظام الثنائي
بأقل عدد ممكن من الأرقام. فكما نعلم جميعا، فالنظام الثنائي يتكون من
رقمين فقط، وهما الـ 0 والـ 1، ولتكوين أي رقم آخر، فإننا نكتب متوالية من
الأصفار والوحدات على شاكلة 01101001 وهذا الرقم يمثل 105 في نظام عدنا
الذي نستعمله يوميا، ولكن لتمثيل أعداد كبيرة نحتاج إلى أصفار ووحدات
كثيرة، مما يسبب العديد من الأخطاء ويضيع الوقت، ويعقد الفهم، لهذا جاء دور
النظام الست عشري ليحل الإشكال، ويعوض كل أربعة أرقام ثنائية برقم ست عشري
واحد.
01101001 = 1001 و 0110 = 9 و 6 = 69 في النظام الست عشري.
النظام
الست عشري يبدأ من الـ 0 وينتهي عند الـ 15، ولكن الأرقام الستة الأخيرة
(من 10 إلى 15) تتكون من وحدتين، وهذا ما سيخلط الأمور، لهذا تم تعويضها
بحروف،
مـنتديات لــــــــــمة حـــــاسوب الاهـــــلية :: [¦ الأقسام البرمجيه - Forums software ¦] :: قسم لغه التجميع Assembly
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى