منتدى طلبة كلية الهندسه بأسوان
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى طلبة كلية الهندسه بأسوان

منتدى طلبة كلية الهندسه بأسوان
 
الرئيسيةالتسجيلأحدث الصوردخول

 

 ماذا تعرف عن لغة التجميع Assembly language

اذهب الى الأسفل 
كاتب الموضوعرسالة
YeHi@$MmZ
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
YeHi@$MmZ


عدد المساهمات : 5020
تاريخ التسجيل : 25/06/2007
العمر : 37
الموقع : سرى
رقم العضوية : 10
Upload Photos : ماذا تعرف عن لغة التجميع Assembly language Upload

ماذا تعرف عن لغة التجميع Assembly language Empty
مُساهمةموضوع: ماذا تعرف عن لغة التجميع Assembly language   ماذا تعرف عن لغة التجميع Assembly language I_icon_minitimeالخميس 19 يونيو - 11:02

:البسمله:

الموضوع منقول _ ولكنى مستعد للرد على استفساراتكم في حدود YeHi@$MmZ معرفتى ان شاء الله

مدخل عام إلى لغة التجميع:
ان معالج الحاسب الألى ( البروسيسور ) لا يفهم غير لغة الألة 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) تتكون من وحدتين، وهذا ما سيخلط الأمور، لهذا تم تعويضها بحروف،



عدل سابقا من قبل YeHi@$MmZ في الخميس 19 يونيو - 12:21 عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
YeHi@$MmZ
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
YeHi@$MmZ


عدد المساهمات : 5020
تاريخ التسجيل : 25/06/2007
العمر : 37
الموقع : سرى
رقم العضوية : 10
Upload Photos : ماذا تعرف عن لغة التجميع Assembly language Upload

ماذا تعرف عن لغة التجميع Assembly language Empty
مُساهمةموضوع: رد: ماذا تعرف عن لغة التجميع Assembly language   ماذا تعرف عن لغة التجميع Assembly language I_icon_minitimeالخميس 19 يونيو - 11:04

البايت (Byte): البايت هو متوالية من ثمانية بتات (8 bits)، فإذا كان البايت مرمّزا (signed) فإنه يمكنه أخذ قيمة محصورة بين –128 و +127 (128= 2 8-1 = 2 7 ، و127= 2 (8-1)-1)، إذن تحتل القيم المحصورة 7 بتات فقط، والبت الأخير يستخدم للإشارة (السلب أو الإيجاب)، إما إذا كان البايت غير مرمّز فإنه بإمكانه أخذ قيمة محصورة بين 0 و 255، أي 256 حالة = (2^8).

الكلمة (Word): بما أن البايت يشغل 8 بتات، فإن الكلمة تشغل 16 بتا، وبالتالي يمكن القول أن الكلمة تحوي 2 بايت.

إذا كانت الكلمة مرمزة، فإنها قادرة على احتواء قيمة محصورة بين –32768 أي (2 15)، و 32767 أي (2 15 - 1)، أما إذا كانت غير مرمزة، فالقيمة المحتواة تكون محصورة بين 0 و65535 (2 16 -1).

الكلمة المضاعفة (Double Word أو DWord): وتشغل الكلمة من هذا النوع قيم ذات 4 بايت. إذن إذا كانت مرمزة، فإنها تكون بين –2147483648 أي (2 31)، و +2147483647 (2 31 –1)، أما إذا كانت غير مرمزة، فبإمكانها حصر قيمة تتراوح بين 0 و 4294967295.

السجل (Register): هو فراغ ذاكري موجود بصفة فيزيائية في قلب المعالج (Processor)، والذي تحفظ فيه القيم أثناء معالجتها. في البداية كانت السجلات تعمل على ثمانية بتات (بايت واحد)، وكانت تسمى آنذاك ?L (حيث يمكن للرمز " ?" أن يكون A أو B أو C أو D)، ثم تطورت السجلات إلى 16 بت (كلمة)، وصارت مسماة بـ ?X، الشيء العجيب في هذا، هو أننا لو قمنا بتغيير قيمة ?L فإننا نكون بذلك قد غيرنا الجزء المنخفض من السجل ?X. بمعنى آخر، ?X مكون من بايت ومن ?L (ويقال أيضا من جزء مرتفع وجزء منخفض). ثم بعد وصول معالجات 386، تم الانتقال إلى سجلات 32 بت، وصارت بالتالي تسمى بـ E ?X، وهنا إذا ما قمنا بتغيير قيمة ?L أو ?X فإننا نكون بذلك قد قمنا بتغيير الجزء E ?X.

السجلات القاعدية هي السجلات AX، BX، CX و DX، وهي سجلات ذات 16 بت (= 2 بايت)، وأجزاءها المنخفضة (Low) هي AL، BL، CL و DL أما أجزاءها المرتفعة (High) فهي AH، BH، CH و DH.

إذا كان AX معدوما (null)، فهذا يعني أن AL =0 و AH =0 أيضا. وإذا ما قمنا بغيير قيمة AX فإننا نغير قيمتي AH و AL معا، أما لو قمنا بتغيير قيمة AL فهذا يعني أن قيمة AX تغيرت أما قيمة AH فمازالت كما هي.


المقاطعة (Interruption): يمكن وصف المقاطعة على أنها برنامج صغير مخزّن في الذاكرة، ويتم طلبه عدة مرات لأداء مهمة محدّدة ، وبوثيرة متزايدة أو متناقصة. يوجد على الأكثر 256 مقاطعة، فالأولى منها مدمجة في البيوس (BIOS، وهو برنامج ينفذ عند تشغيل الحاسب، والذي يسيّر العتاد: القرص الصلب، الوصول إلى الذاكرة ...)، مثل مقاطعات بطاقة الفيديو ولوحة المفاتيح.

بعض المقاطعات يتم طلبها بوثيرة ثابتة: المقاطعة 1Ch مثلا والتي هي عدّاد يزيد في القيمة 18.6 مرة/ثانية (أي يضيف 1 للقيمة المعنية). البعض الآخر يتم طلبه فقط في حالة ما إذا أردناها: المقاطعة 09h الخاصة بلوحة المفاتيح، يتم طلبها في كل مرة يقوم المستخدم بالضغط على زر ما أو عند تحريره.

المكدس (Stack): في المكدس نقوم بإضافة القيم بفضل التعليمة PUSH، ونقوم بحذفها من خلال التعليمة POP. في قمّة المكدس نجد قيمة السجلE]BP]. ويمكننا بذلك معرفة ما هو موجود في الطابق X من خلال التعليمة "[mov AX, [Bp-4"، ولكن ليس لحذف هذه القيمة، لأننا لو قمنا بحذف قيمة من وسط المكدس، فإن هذه الأخيرة تتقهقر، وهذا ما يؤدي إلى توقف الحاسب عن العمل.

الراية (Flag): الرايات هي بتات موجودة بداخل المعالج. وسنفرد لقائمة الرايات مجالاً للحديث في الدروس القادمة.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
YeHi@$MmZ
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
YeHi@$MmZ


عدد المساهمات : 5020
تاريخ التسجيل : 25/06/2007
العمر : 37
الموقع : سرى
رقم العضوية : 10
Upload Photos : ماذا تعرف عن لغة التجميع Assembly language Upload

ماذا تعرف عن لغة التجميع Assembly language Empty
مُساهمةموضوع: رد: ماذا تعرف عن لغة التجميع Assembly language   ماذا تعرف عن لغة التجميع Assembly language I_icon_minitimeالخميس 19 يونيو - 11:12

ودى مجموعة من الدروس المميزة

20 درس باللغة العربية
جمعتها لكم ورفعتهالكم في ملف واحد


الدرس الاول :يدور حول المعالج ,الذاكرة,وحدات الذاكرة,

الناقل bus,مكونات المعالج, لغات البرمجه,لغة اسمبلي ،
اسمبلر و اسمبلي,وخيرا الموازيين.

الدرس الثاني:المعالج والمسجلات.
الدرس الثالث:الموازيين والتحويل بينها.
قد تكون العناويين غريبه خصوصا على الطلاب الذين يدرسون

باللغه الانجليزية لكن الرجاء الاطلاع على المحتوى وستجدون انه
يشرح بالتفصيل كل ما تحتاجون لدراسة هذه اللغه....

الدرس الرابع: الاعداد السالبه.


الدرس الخامس:الدرس يتطرق الى الاوامر

الاساسية MOV , ADD , SUB , inc , dec.

الدرس السادس:الدرس يتطرق الى امر المقارنة CMP

والقفز المشروط وغير مشروط والرايات مع بعض التمارين والحلول

الدرس السابع: يتعلق في الرايات FLAGS واوامر القفز.


الدرس الثامن:يتطرق الى عمليات القسمة والضرب

والقفز المشروط المتخصص بالاعداد الموجبة .

الدرس التاسع:يتطرق هذا الدرس الى الحلقات في

لغة الاسمبلي والى العمليات المنطقية (OR , TEST , AND ,XOR ,NOT)

الدرس العاشر:الدرس يتطرق الى المتغيرات وانواعها في لغة الاسمبلي

الدرس الحادي عشر:
وهذا الدرس يتطرق الى اوامر الدوران والازاحة في لغة الاسمبلي
ROR ROL RCR RCL SAL SAR


الدرس الثاني عشر:الدرس يتطرق الى المقاطعات interrupts

الدرس الثالث عشر:
اقدم لكم الدرس 13 والذي يتطرق الى مادة النصوص والحلقات الخاصة بها
MOVSB MOVSW SCASB SCASW CMPSB

CMPSW LOADSB LOADSW STOSB STOSW
REP REPZ REPNZ
JCXZ


الدرس الرابع عشر:
الذي يتطرق الى بعض الاوامر المتفرقة مثل
IN , OUT , SEG ,XLAT ,POSHF , POPF

الدرس الخامس عشر:الذي يتطرق لموضوع الماكرو


الدرس السادس عشر:اقدم لكم الدرس السادس عشر

وهو عبارة الجزء الثاني من مادة الماكرو

الدرس السابع عشر:يتطرق الى الدوال proc

الدرس الثامن عشر:يتطرق الى الاوامر التي تتعلق في BCD-code
مثل: AAA , DAS , AAM


الدرس التاسع عشر:يتطرق الى record وكيفية التعامل معه

الدرس العشرون: يتطرق الى structure والتعامل معه

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
ماذا تعرف عن لغة التجميع Assembly language
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» VTC Assembly Language Programming
» ماذا تعرف عن الهاكرز ؟
» ماذا تعرف عن الكويت ؟!
» ماذا تعرف عن المعسل
» ماذا تعرف عن شهر رمضان

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى طلبة كلية الهندسه بأسوان :: هندسة الحاسبات والنظم :: البرمجة Programming-
انتقل الى: