دروس كمبيوتر وصيانة دروس حاسب دروس مجلة  درس نيوك phpnuke الدروس دروس مسنجر MSN - yahoo - Gmail دروس منتديات vBulletin دروس الجوالات والهواتف دروس السي بنل cpanel دروس اكسس access دروس بيونت شوب برو - point shop pro دروس برمجة php - mysql دروس برامج منوعة software دروس ثري دي ماكس 3D max دروس جافا سكريبت JavaScript دروس دريم ويفر DreamWeaver دروس شبكات Networks دروس سويش - swish دروس فلاش - flash دروس فيجوال بيسك Visual Basic دروس فرونت بيج - frontpage دروس فوتوشوب photoshop دروس هكر hacker crack virus
مدخل عام إلى لغة الأسمبلي- - الاسمبلي - ASSEMBLY
اعمال السعودية ينتهي في 8\10\1429 هـ روح القصيد ينتهي في 3\11\1429 هـ  ينتهي في20\10\1429 هـ
الحمادين ينتهي في 8\10\1429 هـ جريمة هزت مدينة الرياض ينتهي في 3\11\1429 هـ الجيل الجديد لخدمات الانترنت 8-8-1429
للاعلان بالموقع سعر الاعلان 400 ريال في كافة اقسام موقع مدرسة المشاغبين جويا نتهي في 20\10\1429 هـ للاعلان بالموقع سعر الاعلان 400 ريال في كافة اقسام موقع مدرسة المشاغبين
للاعلان بالموقع سعر الاعلان 400 ريال في كافة اقسام موقع مدرسة المشاغبين منتديات دلوعتي ينتهي في 16\11\1429 هـ للاعلان بالموقع سعر الاعلان 400 ريال في كافة اقسام موقع مدرسة المشاغبين
احصائيات سريعة
اقسام على الموقع
دروس في أنظمة التشغيل | ماي سكيول - MySQL | لفيجوال بيسك - Visual Basic | المات لاب Matlab | اللينكس و اليونكس | الاسمبلي - ASSEMBLY | الاوتلوك - Outlook | البرمجة تحت اللنكس -Linux Programming | البرمجة تحت وندوز بواسطة دوال ال win API | البرمجة في بيئة الدوت نت .Net | التصمبم والرسوم | الدلفي - Delphi | الجافا - Java | السي - C | الصوت و الصورة | الوورد - Word | القسم العام للأوفيس | الكوبول - COBOL | control panel-ftp | اوراكل - Oracle | اكسل - Excel | تحميل الملفات | برامج متنوعة | برامج التصفح | برامج الحماية | برامج إنترنت | تعرّف على الويب | بوربوينت - Power Point | images | دروس : كمبيوتر وصيانة | دروس مجلة نيوك phpnuke | دروس مسنجر MSN - yahoo - Gmail | دروس منتديات vBulletin | دروس الجوالات والهواتف | دروس السي بنل cpanel | دروس اكسس access | دروس بيونت شوب برو - point shop pro | دروس برمجة php - mysql | دروس برامج منوعة software | دروس ثري دي ماكس 3D max | دروس تطوير المواقع والمنتديات | دروس جافا سكريبت JavaScript | دروس دريم ويفر DreamWeaver | دروس شبكات Networks | دروس سويش - swish | دروس فلاش - flash | دروس فلاش mx | دروس فى نظام الوندوز WINDOWS | دروس فىالباسكال - Pascal | دروس فيجوال بيسك Visual Basic | دروس فرونت بيج - frontpage | دروس فوتوشوب photoshop | دروس هكر hacker crack virus | سي ++ | سي شارب - #C | فيجوال سي ++ - ++ Visual C | قسم البرمجة العام | دروس فى لغة HTML
البحث في المواد

اكثر المحتويات زيارة
الدوال في الاكسل (6,929 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (4,570 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (3,334 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (2,686 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (2,644 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (2,620 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (2,534 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (2,286 مشاهده)
دروس في الأوفيس الأكسس - Access0- (1,981 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,948 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,938 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,833 مشاهده)
تعريف الفن التشكيلي: (1,778 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,758 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,658 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,567 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,555 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,549 مشاهده)
التعرف على مكونات الكمبيوتر (1,490 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,475 مشاهده)
ما هو المات لاب MATLAB؟ (1,381 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (1,375 مشاهده)
درس تعريب المجلة (1,342 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (1,309 مشاهده)
مقدمة عن لغة البيسك (1,304 مشاهده)
جديد مواد مع عشوائي
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (953 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (583 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (711 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (840 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (906 مشاهده)
دمج المراسلات0-- (521 مشاهده)
وضع صورة كخلفية للنص0-- (662 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (463 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (759 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (494 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,549 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (790 مشاهده)
أساسيات في Access0--0 (597 مشاهده)
تصميم تقرير لطباعة البيانات0---- (590 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (581 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (677 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (544 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (451 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (409 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (560 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (489 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (281 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (369 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (389 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (508 مشاهده)
اعلانات في الموقع على جميع الصفحات

مدخل عام إلى لغة الأسمبلي-

مدخل عام إلى لغة الأسمبلي + معجم التجميع





بسم الله الرحمن الرحيم


 


مدخل عام إلى لغة التجميع:


معالج أي حاسب لا يفهم أية لغة، لا الباسكال ولا السي ولا الجافا، ولا حتى التجميع في حد ذاته، إنما يفهم شيئا واحدا، هو لغة الآلة. إنها قائمة من ثمانية أعداد تسمى البتات bits، وتكون مقدمة في النظام الست عشري، على شاكلة "B0h 12h". ومنه يمكننا القول أن التجميع هو إصدار يتوافق مع فهم البشر للغة الآلة.

المثال السابق يعطينا "mov al, 12h"، ومعناها نسخ القيمة 12h في السجل AL. ستفهم معنى ذلك بعد قراءتك لهذه السلسلة إن شاء الله!

كما يمكنك ملاحظته، إنها اللغة البرمجية الأكثر قربا إلى المعالج (إلا في حالة قدرتك على البرمجة بلغة الآلة نفسها).

سؤال قد يتبادر إلى ذهنك: فيم تستعمل؟ الأهمية الأولى تتمثل في السرعة، حيث أنها اللغة التي بفضلها يمكننا تحقيق البرامج الأكثر سرعة، وخاصة في ميدان الرسومات.

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




 



















النظام الست عشري


النظام الثماني


النظام الثنائي


النظام العشري


0
1
2
3
4
5
6
7
8
9


0
1
2
3
4
5
6
7
10
11


0
1
10
11
100
101
110
111
1000
1001


0
1
2
3
4
5
6
7
8
9


A
B
C
D
E
F


12
13
14
15
16
17


1010
1011
1100
1101
1110
1111


10
11
12
13
14
15


 


 


ملاحظة: يشار للرقم في النظام الست عشري بعدة رموز:

ففي لغة السي نشير إلى الرقم بالسابقة 0x، أما في لغة الباسكال، فيسبق الرقم رمز الدولار، وفي لغة التجميع يشار إلى الرقم أنه ست عشري من خلال اللاحقة h

Ox14 في لغة السي = $14 في لغة الباسكال = 14h في لغة التجميع.

ملاحظة: لغويا، العدد هو الكتابة الحرفية للرقم، والرقم هو الكتابة الرمزية للعدد.

البايت (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 فمازالت كما هي. (الرسم السابق يوضح الصورة أكثر).

لنلاحظ هذا المثال:

al = 15
ah = 10
=> ax = al + ah*256 = 15 + 10*256 = 2575

لمزيد من التفاصيل راجع قائمة السجلات في الدروس التالية.

القطاع والفرع (Segment & Offset): العناوين الذاكرية (مواقع البايتات على صفائح الذاكرة) معرفة بسجّلين، القطاع (الجزء المرتفع من العنوان)، وبالفرع (الجزء المنخفض من العنوان). نشير أن العنوان يحدد بـ [Segment :[Offset (حيث أن النقطتين ":" هما الفاصل، في حين يعتبر المجالان "]" و "[" غير إجباريين). مثال: [DS :[DI

مع وصول الـ 386، تطورت الفروع إلى 32 بت، من أجل الوصول إلى أقصى الذاكرة (16 ميغا بايت)، وظهرت بذلك الفروع بالسابقة E، مثل (ESI, EDI, ESP, EBP)، هذا بالنسبة لسجلات 32 بت، ونفس الشيء كان مع سجلات 16 بت، حيث كانت الفروع SI, DI, SP, SB. لمزيد من التفاصيل، راجع قائمة السجلات في الدروس القادمة.

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

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

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

الراية (Flag): الرايات هي بتات موجودة بداخل المعالج. وسنفرد لقائمة الرايات مجالاً للحديث في الدروس القادمة.


درس مدخل عام إلى لغة الأسمبلي-

أضف هذه المادة في موقعك:
مواد مشابهة:
 قائمة الرايات- قائمة الرايات-
قائمة الرايات-
(مرات المشاهدة: 110 مرات)
قائمة التعليمات [الجزء الثاني] قائمة التعليمات [الجزء الثاني]
قائمة التعليمات [الجزء الثاني]
(مرات المشاهدة: 112 مرات)
دورة الأسمبلى - اليوم الخامس دورة الأسمبلى - اليوم الخامس
دورة الأسمبلى - اليوم الخامس
(مرات المشاهدة: 200 مرات)
قائمة التعليمات [الجزء الأول]- قائمة التعليمات [الجزء الأول]-
قائمة التعليمات [الجزء الأول]-
(مرات المشاهدة: 54 مرات)
المخزن والاوامر MOV,CMP,JMP- المخزن والاوامر MOV,CMP,JMP-
المخزن والاوامر MOV,CMP,JMP-
(مرات المشاهدة: 338 مرات)
الدرس الثالث الدرس الثالث
الدرس الثالث
(مرات المشاهدة: 140 مرات)
اكتب اول برنامج بالاسمبلي اكتب اول برنامج بالاسمبلي
اكتب اول برنامج بالاسمبلي
(مرات المشاهدة: 293 مرات)
دورة الأسمبلى - اليوم الثاني دورة الأسمبلى - اليوم الثاني
دورة الأسمبلى - اليوم الثاني
(مرات المشاهدة: 280 مرات)
الدرس الاول الدرس الاول
الدرس الاول
(مرات المشاهدة: 225 مرات)
قائمة المقاطعات= قائمة المقاطعات=
قائمة المقاطعات=
(مرات المشاهدة: 75 مرات)
جميع الحقوق في هذا الموقع محفوظة وكل المواد على الاقسام ملك لاصحابها :Copyright © All rights reserved