Moutaz
22-02-2002, 23:00
لماذا أريد أستخدام الأسمبلي :
بتعلمك لغة الأسمبلي فأنك تكشف النقاب عن الأسرار المختفيه وراء الكمبيوتر وتصبح قادراً على الفهم تماماً كيف يعمل المعالج وكيف يعمل البرنامج وبذلك تزيد خبرتك كمبرمج وبالطبع فأن الأسمبلي أقوى من اللغات العالية المستوى في التعامل مع العتاد وتعطيك مرونة عالية وقدرة وصول الى أشياء لم تكن تستطيع الوصول اليها من قبل ، كذلك هناك نوعيات من البرامج لايمكن الا برمجتها بالأسمبلي مثل الدرايفات(سواقات) الأجهزه ، كذلك فأن الأسمبلي يعطيط برامج سريعة جداً ، وبالطبع فأن بناء برنامج متطور بالأسمبلي أشبه بحفر حفرة بواسطة الملعقه فالبرغم أنك تحفر الا أنك أنتاجيتك قليله ولكن من المحبذ جداً برمجة بعض الدوال و الأحزاء من البرامج بالأسمبلي وبقية البرنامج بواسطة لغة عالية المستوى مثل السي++.
العلاقة بين الأسمبلي واللغات الأخرى :
تعتبر كل من لغة الآله و الأسمبلي لغتين منخفضتي المستوى Low-Level Language أختصاراً LLL لأنها تكتب تعليمه تعليمه ( بعض الناس يعتبر لغة السي لغة منخفضة المستوى ، وهذا الكلام أرجح الى الخطأ منه الى الصواب ) بينما تعتبر باقي اللغات High-Level Language أختصاراً HLL وفي هذه اللغات تختفي تقنية تخطيط واحد-الى-واحد وتفسر التعليمة الواحدة الى عدد كبير من تعيلمات لغة الآله
تطبيقات لغة الأسمبلي :
تتطلب كتابة البرامج بلغة الأسمبلي معرفة بالعتاد وعناية خاصة مع الأهتمام بأدق وأقل التفاصيل ، في أيام البرمجة القديمة كان المبرمجون يكتبون برامجهم بلغة الأسمبلي لأن ذاكرة الرام وقتها كانت صغيرة (أقل من 64كيلوبايت) وهم بحاجة الى برامج أصغر وأسرع خصوصاً أن معالجتهم أيضاً كانت بطيئة ، مع تطور الحاسوب وتوسع سعة ذاكرة الرام وزيادة سرعته أصبحت البرامج أكثر طولاً وتعقيداً ، هذا التعقيد أدى الى أستخدام اللغات البرمجية عالية المستوى HLL مثل السي والكوبول والبيسك والباسكال والفورترن ، مرة أخرى تطور الحاسوب فأدى الى أستخدام اللغات العليا الموجهة الهدف OOP مثل السي++ والجافا والتي مكنت من كتابة برامج قوامها آلاف الأسطر والتعليمات المعقده والمتداخله .
من الصعب أن تلاقي برامج كبيرة مكتوبة كاملة بلغة الأسمبلي لأن كتابتها صعب والأهم من ذلك تطويرها وصيانتها أصعب بكثير ، بدل ذلك يقوم المبرمجين ببرمجة مقاطع مبرمجة برمجة مثلى بلغة الأسمبلي لأستخدمها في تنفيذ أسرع أو الوصول الى العتاد عن طريقها وباقي البرنامج بواسطة لغة عالية المستوى .
يفض المبرمجين لغة السي++ كلغة قياسية للبرمجة بلغة عليا لأن لها قدرة عالية وقوية جداً وموجهة الهدف مع القدرة على كتابة مقاطع السي فيها وهي لغة أقل أنخفاضاً وأكثر مرونة مع أستخدام الأسمبلي كعنصر مهم في الوصول الى العتاد وبرمجة الجزئيات المحتاجة للسرعة .
لا يستخدم المبرمجون شفرة الأسمبلي وسط شفرة لغة عالية المستوى عادة وأنما يستخدمونها عن طريق واجه على شكل دالة أو كائن وتحتوي هذه الدالة أو هذا الكائن على شفرة الأسمبلي المطلوبة ، وقد تستخدم روتيناً فرعياً أو دالة في لغة عالية المستوى وأنت لاتعلم بأنك باستدعاء هذه الدالة أو الروتين الفرعي قد أستدعيت شفرة مكتوبة بلغة الأسمبلي .
لغة الآله :
لغة الآله كما ذكرنا سابقاً هي اللغة التي تسطيع الآله أو المعالج التعامل معها مباشرة ، في العائلة X86 كل معالج يحتوي يستطيع تنفيذ تعليمات المعالج الذي قبله ويملك مجموعة تعليمات موسعة وأ ضافية لا تستطيع المعالجات التي قبله تنفيذها وأما المعالج الذي يأتي بعد هذا المعالج فأنه يدعم التعليمات الموسعة للمعالج الذي قبله بينما يحتوي هو أيضاً على تعليمات جديدة وموسعة ، بأختصار اذا صممت برنامج لمعالح ما فأن المعالجات ماقبل هذا المعالح لن تستطيع تشغيله بينما المعالج نفسة والمعالجات التي بعده (من نفس العائلة) تستطيع تشغيل البرنامج .
لفد حافظت شركة أنتل على التوافقية في العائلة X86 أبتداء من المعالج 8086 وصولاً الى بانتنيوم 4=80886 ولكن الحفاظ على التوافقية يفرض قيود على تصميم المعالج وأستخدام تقنيات قديمة ، ومؤخراً قررت شركة أنتل ايقاف عائلة المعالح X86 عند بانتنيوم4 وقامت بأنشاء معالج جديد (غير متوافق مع العائلة X86 ) مبني على تقنية ال64 بت وهو المعالج اتانيوم الجديد .
مثال على لغة الآله :
التعليمية 1011000000000101 هي تعليمة بلغة الآله ومعناها أنقل الرقم 5 الى المسجل ah يقابلها بلغة الأسمبلي mov ah,5 ال 8 بت الأولى من التعليمة تشكل شفرة التعليمة OP-code=operation code وهي تعني نقل قيمة بطول 8 بت الى المسجل AL ، الجزء الثاني من ال16 بت ال8بت الأخرى تشكل الرقم 5 ثنائياً
بتعلمك لغة الأسمبلي فأنك تكشف النقاب عن الأسرار المختفيه وراء الكمبيوتر وتصبح قادراً على الفهم تماماً كيف يعمل المعالج وكيف يعمل البرنامج وبذلك تزيد خبرتك كمبرمج وبالطبع فأن الأسمبلي أقوى من اللغات العالية المستوى في التعامل مع العتاد وتعطيك مرونة عالية وقدرة وصول الى أشياء لم تكن تستطيع الوصول اليها من قبل ، كذلك هناك نوعيات من البرامج لايمكن الا برمجتها بالأسمبلي مثل الدرايفات(سواقات) الأجهزه ، كذلك فأن الأسمبلي يعطيط برامج سريعة جداً ، وبالطبع فأن بناء برنامج متطور بالأسمبلي أشبه بحفر حفرة بواسطة الملعقه فالبرغم أنك تحفر الا أنك أنتاجيتك قليله ولكن من المحبذ جداً برمجة بعض الدوال و الأحزاء من البرامج بالأسمبلي وبقية البرنامج بواسطة لغة عالية المستوى مثل السي++.
العلاقة بين الأسمبلي واللغات الأخرى :
تعتبر كل من لغة الآله و الأسمبلي لغتين منخفضتي المستوى Low-Level Language أختصاراً LLL لأنها تكتب تعليمه تعليمه ( بعض الناس يعتبر لغة السي لغة منخفضة المستوى ، وهذا الكلام أرجح الى الخطأ منه الى الصواب ) بينما تعتبر باقي اللغات High-Level Language أختصاراً HLL وفي هذه اللغات تختفي تقنية تخطيط واحد-الى-واحد وتفسر التعليمة الواحدة الى عدد كبير من تعيلمات لغة الآله
تطبيقات لغة الأسمبلي :
تتطلب كتابة البرامج بلغة الأسمبلي معرفة بالعتاد وعناية خاصة مع الأهتمام بأدق وأقل التفاصيل ، في أيام البرمجة القديمة كان المبرمجون يكتبون برامجهم بلغة الأسمبلي لأن ذاكرة الرام وقتها كانت صغيرة (أقل من 64كيلوبايت) وهم بحاجة الى برامج أصغر وأسرع خصوصاً أن معالجتهم أيضاً كانت بطيئة ، مع تطور الحاسوب وتوسع سعة ذاكرة الرام وزيادة سرعته أصبحت البرامج أكثر طولاً وتعقيداً ، هذا التعقيد أدى الى أستخدام اللغات البرمجية عالية المستوى HLL مثل السي والكوبول والبيسك والباسكال والفورترن ، مرة أخرى تطور الحاسوب فأدى الى أستخدام اللغات العليا الموجهة الهدف OOP مثل السي++ والجافا والتي مكنت من كتابة برامج قوامها آلاف الأسطر والتعليمات المعقده والمتداخله .
من الصعب أن تلاقي برامج كبيرة مكتوبة كاملة بلغة الأسمبلي لأن كتابتها صعب والأهم من ذلك تطويرها وصيانتها أصعب بكثير ، بدل ذلك يقوم المبرمجين ببرمجة مقاطع مبرمجة برمجة مثلى بلغة الأسمبلي لأستخدمها في تنفيذ أسرع أو الوصول الى العتاد عن طريقها وباقي البرنامج بواسطة لغة عالية المستوى .
يفض المبرمجين لغة السي++ كلغة قياسية للبرمجة بلغة عليا لأن لها قدرة عالية وقوية جداً وموجهة الهدف مع القدرة على كتابة مقاطع السي فيها وهي لغة أقل أنخفاضاً وأكثر مرونة مع أستخدام الأسمبلي كعنصر مهم في الوصول الى العتاد وبرمجة الجزئيات المحتاجة للسرعة .
لا يستخدم المبرمجون شفرة الأسمبلي وسط شفرة لغة عالية المستوى عادة وأنما يستخدمونها عن طريق واجه على شكل دالة أو كائن وتحتوي هذه الدالة أو هذا الكائن على شفرة الأسمبلي المطلوبة ، وقد تستخدم روتيناً فرعياً أو دالة في لغة عالية المستوى وأنت لاتعلم بأنك باستدعاء هذه الدالة أو الروتين الفرعي قد أستدعيت شفرة مكتوبة بلغة الأسمبلي .
لغة الآله :
لغة الآله كما ذكرنا سابقاً هي اللغة التي تسطيع الآله أو المعالج التعامل معها مباشرة ، في العائلة X86 كل معالج يحتوي يستطيع تنفيذ تعليمات المعالج الذي قبله ويملك مجموعة تعليمات موسعة وأ ضافية لا تستطيع المعالجات التي قبله تنفيذها وأما المعالج الذي يأتي بعد هذا المعالج فأنه يدعم التعليمات الموسعة للمعالج الذي قبله بينما يحتوي هو أيضاً على تعليمات جديدة وموسعة ، بأختصار اذا صممت برنامج لمعالح ما فأن المعالجات ماقبل هذا المعالح لن تستطيع تشغيله بينما المعالج نفسة والمعالجات التي بعده (من نفس العائلة) تستطيع تشغيل البرنامج .
لفد حافظت شركة أنتل على التوافقية في العائلة X86 أبتداء من المعالج 8086 وصولاً الى بانتنيوم 4=80886 ولكن الحفاظ على التوافقية يفرض قيود على تصميم المعالج وأستخدام تقنيات قديمة ، ومؤخراً قررت شركة أنتل ايقاف عائلة المعالح X86 عند بانتنيوم4 وقامت بأنشاء معالج جديد (غير متوافق مع العائلة X86 ) مبني على تقنية ال64 بت وهو المعالج اتانيوم الجديد .
مثال على لغة الآله :
التعليمية 1011000000000101 هي تعليمة بلغة الآله ومعناها أنقل الرقم 5 الى المسجل ah يقابلها بلغة الأسمبلي mov ah,5 ال 8 بت الأولى من التعليمة تشكل شفرة التعليمة OP-code=operation code وهي تعني نقل قيمة بطول 8 بت الى المسجل AL ، الجزء الثاني من ال16 بت ال8بت الأخرى تشكل الرقم 5 ثنائياً