الرئيسية    المنتدى     أرشيف المقالات     المكتبة     رفع الصور    إتصل بنا

تسجيل دخول
اسم المستخدم :

كلمة المرور :


فقدان كلمة المرور ؟

إشترك الآن
الصفحة الرئيسية
بلوك الإقتباسات
اللباقة هي القدرة على وصف الآخرين كما يرون هم أنفسهم
رأي
بحث
آخر المواضيع مشاركة
بلوك الإستفتاءات

ماهو أكثر ما يهمك عند البحث عن شركة استضافة لموقعك
السعر
المساحة
الباند ويدث
الدعم الفني
أفضل المقالات
أخر كتب مضافة
عروة نت - مدخل إلى الأسمبلي - برمجة - المقالات
برمجة : مدخل إلى الأسمبلي
بواسطة Mohammad في 2005/2/25 4:40:00 (7348 القراء) مقالات اخرى لنفس المشترك
برمجة


مدخل إلى الأسمبلي

تعتبر لغة الأ سمبلي من اللغات المهمة جداً لإي مبرمج يسعى لتحقيق القوة لبرامجه .حيث أنه يستطيع استخدام أجزاء منـها في برامجه لتحقيق الغرض المطلوب دون الحاجة لكتابة البرنامج بشكل كامل بهذه اللغـة طبعاً هذا أمر أشبه بالمستحيل إن لم يكن مستحيلاً تـماماً .
 وهناك العديد من لغات البرمجة التي تدعم هذه اللغـة بشكل جيد ومرح وخاصة لغة البرمجة ديلفي Delphi

حيث يمكن الوصول من ديلفي إلى ما يسمى inline assembler الذي يمكننا من كتابة تعليمات بلغة التجميع ضمن بيئة ديلفي نفسها , ودون الحاجة إلى فصل هذة التعليمات بوحدات أو توابع خاصة , بل يمكن إدراجها بإي منطقة من سياق البرنامج بعد إبتدائها بالكلمة المحجوزة asm وإنهائها بعبـارة end ;



مع الملاحظة بإن ديلفي تسمح باستخدام المتحولات المعرفة ضمن سياق البرنامج في الأسيمبلي المضمن دون الحاجة إلى إعادة تعريفها من جديد
تستخدم الاسمبلي تعليمات بسيطة بدلاً من الأصفار و الواحدات في شيفرة الآلة للمعالج. إن الصيغة العامة لكتابة الأمر (التعليمة) في لغة الأسمبلي هي:
لافتة : تعليمة ; تعليق

عادة فإن التعليقات أو الملاحظات التي تصف الأوامر توضع على الطرف الأيمن. و هذا النوع من التوثيق بين التعليمة و التعليق يجعل من السهل على المبرمج كتابة و قراءة و تصحيح الشيفرة. و نقصد بكلمة الشيفرة أن البرنامج مكتوب بلغة الآلة للمعالج و الذي يُعرف بشيفرة الهدف object code أما البرنامج المكتوب بلغة الأسمبلي فيدعى بشيفرة المصدر source code . هذا و إن كل تعليمة في برنامج المصدر تطابق أمراً واحداً في لغة الأسمبلي حيث أن الأمر يجب أن يحدِّد أي عملية سيتم تنفيذها و ما هي متحولات المعطيات التي ستُعالج. لهذا السبب تُقسم التعليمة إلى قسمين منفصلين : رمز التعليمة opcode = operation code و المتحولات operands . رمز العملية هو جزء من التعليمة و الذي يحدد العملية التي ستُنفذ فمثلاً نذكر بعض العمليات النموذجية كالجمع و الطرح و النقل

في لغة الأسمبلي تستخدم الكلمات المختزلة mnemonic من أجل التعليمات فمثلاً بالنسبة للمعالج 8086 فالكلمات المختزلة في لغة الأسمبلي لعمليات الجمع و الطرح و النقل هي على الترتيب ADD و SUB و MOV . أما المتحولات فتحدد المعطيات التي ستُعالج من قِبل المعالج بواسطة رمز العملية للتعليمة فمثلاً في التعليمة التي تضيف محتويات مسجل القاعدة إلى محتويات المراكم فإن BX و AX هي المتحولات و تُكتب التعليمة على الشكل التالي ADD AX,BX ففي هذا المثال تُضاف محتويات BX إلى AX و يوضع ناتج الجمع في AX و لذلك يُعتَبر BX متحول المصدر و AX متحول الهدف.
 




- تعليمات نقل المعطيات

 

 

 

 

في لغة الأسمبلي تستخدم الكلمات المختزلةمن أجل التعليمات فمثلاً بالنسبة للمعالج 8086 فالكلمات المختزلة في لغة الأسمبلي لعمليات الجمع و الطرح و النقل هي على الترتيبووأما المتحولات فتحدد المعطيات التي ستُعالج من قِبل المعالج بواسطة رمز العملية للتعليمة فمثلاً في التعليمة التي تضيف محتويات مسجل القاعدة إلى محتويات المراكم فإنوهي المتحولات و تُكتب التعليمة على الشكل التاليففي هذا المثال تُضاف محتوياتإلىو يوضع ناتج الجمع فيو لذلك يُعتَبرمتحول المصدر ومتحول الهدف


يملك المعالج مجموعة تعليمات وظيفتها نقل المعطيات و ذلك إما بين مسجلات المعالج الداخلية أو بين مسجل داخلي و حجرة تخزين في الذاكرة و هي:

1) تعليمة Mov

تستخدم هذه التعليمة لنقل بايت أو كلمة معطيات من متحول المصدر إلى متحول الهدف و لها الشكل التالي:

الأعلام المتأثرة

العملية

الصيغة

المعنى

الكلمة المختزلة

لا يوجد

S → D

MOV D,S

نقل

MOV

إن لهذه التعليمة يمكن أن تكون مسجلات داخلية أو حجرات تخزين في الذاكرة

الحالات المستثناة من تعليمة MOV

1-لا تستطيع تعليمة MOV أن تنقل المعطيات بشكل مباشر بين حجرتي ذاكرة لذلك لا نرى في الجدول المجاور الحالة التالية : Mem → Mem و لحل هذه المشكلة فإن المعطيات المرغوب بنقلها يجب نقلها أولاً في مسجل داخلي بواسطة تعليمة MOV ، و من ثم تنقل محتويات هذا المسجل إلى حجرة جديدة في الذاكرة بواسطة تعليمة MOV أخرى.

2-لا يمكن وضع قيمة فورية في مسجل مقطع مباشرة. أي أن التعليمة التالية غير مسموح بها MOV DS,1000 و لحل هذا المشكلة نستخدم التعليمتين التاليتين :

MOV AX,1000

MOV DS,AX

3-لا يمكن نقل محتويات أحد مسجلات المقاطع إلى مسـجل مقطع آخر مباشرة، أي أن التعليمة التالية غير مسموح بها MOV DS,ES و لحل هذه المشكلة نقوم بـ


MOV AX,ES
MOV DS,AX

 

مثال عام :
 [MOV AL,[SI
هذه التعليمة تعني نقل محتويات حجرة الذاكرة المشار إليها بواسطة المسجل SI إلى المسجل AL و إن نظام العنونة في هذه التعليمة هو عنونة غير مباشرة بالمسجل و متحول المصدر عنوانه الفيزيائي هو PA = DS x 10h + SI أما متحول الهدف فهو AL .


2) تعليمة التبديل
XCHG

 

 

 

 

تُستخدم هذه التعليمة لاستبدال متحول المصدر بمتحول الهدف و لاستبدال متحول الهدف بمتحول المصدر.

الأعلام المتأثرة

العملية

الصيغة

المعنى

الكلمة المختزلة

لا يوجد

S → D

D → S

XCHG D,S

تبديل

XCHG

المصدر S

الهدف D

 

Reg16

Acc

Reg

Mem

Reg

Reg

 

 

و يبين الجدول التالي مختلف أنواع متحولات المصدر و الهدف لتعليمة XCHG .

مثال:

XCHG AX,BX

في هذا المثال يتم التبديل بين محتويات AX و BX.

XCHG [SUM],BX

يتم التبديل بين محتوى الحجرة SUM في الذاكرة و بين المسجل BX .


3) تعليمة
XLAT

تتعامل هذه التعليمة مع AL فقط ، إن تعامل هذه التعليمة يتم مع الجداول المخزنة في الذاكرة فلو وضعنا في BX إزاحة بداية الجدول نسبة إلى مقطع المعطيات DS و وضعنا في AL إزاحة العنصر نسبه إلى بداية الجدول، عندها تقوم تعليمة XLAT بجمع محتويات المسجل AL مع محتويات المسجل BX و تعتبر الناتج إزاحة بالنسبة إلى مقطع المعطيات، ثم تقوم بوضع قيمة الحجرة المعطى إزاحتها في AL .

الأعلام المتأثرة

العملية

الصيغة

المعنى

الكلمة المختزلة

لا يوجد

( DS x 10h ) + [AL+BX] → AL

XLAT جدول المصدر

جدول المصدر

ترجمة

XLAT

مثال:

1

4

9

16

DS

100

&a

 




علي عيسى
بتصرف عن موقع الفريق العربي للبرمجة



مقالات أخرى
2009/11/4 17:40:04 - المميزات الجديدة في بيئة التطوير دلفي 2010
2008/12/30 22:02:46 - دلفي Prism، ما له وما عليه
2008/11/1 17:15:05 - فوبيا البرمجيات العربية
2008/10/12 17:50:00 - لمحة بسيطة عن دلفي 2009
2008/5/19 14:38:04 - Embarcadero تستحوذ على شركة CodeGear

التعليقات تخص صاحبها ولا تخص ادارة الموقع
الكاتب الموضوع
orwah
بتاريخ: 2005/2/25 6:33  تحديث: 2005/2/25 6:33
مدير الموقع
الإنظمام: 2005/2/13
من: Syria
ردود: 1192
 مدخل إلى الأسمبلي
-
مقالة أكثر من رائعة , من صديق أكثر من رائع

شكرا كتير يا علي , على مقالتك المفيدة ولاتحرمنا من كتاباتك

صديقك
عروة

-
Ali
بتاريخ: 2005/2/27 18:53  تحديث: 2005/5/25 22:15
الإنظمام: 2005/2/24
من:
ردود: 156
 مدخل إلى الأسمبلي
شكراً كتير عروة على ها لإطراء
وإن شاء الله رح إكتب مقالات على طول
وبأكترمن موضوع



ملاحظة :المثال المذكور فوق خطأ مطبعي


--------------
علي عيسى


عروة عيسى
2005-2007

Powered by XOOPS