العودة سوالف للجميع > سوالف تكنولوجيا وتصوير > سوالف الكمبيوتر والاتصالات > تعلم لغة Assembly الحلقه 1
المشاركة في الموضوع
Engineer Engineer غير متصل    
عضو جديد  
المشاركات: 63
#1  
تعلم لغة Assembly الحلقة 1/3

Assembly Language

فقط في ثلاث حلقــــــــات

المحتوي

1- مقدمة.
2- مفاهيم أساسية.
3- البرمجة باستخدام Assembly.
4- البرنامج DEBUG
5- إدارة الملفات.
6- الماكرو.
7- أمثلة.

موضوع اليوم : مقدمة ومفاهيم أساسية

س1: ما هي لغة Assembly؟


لغة Assembly هي لغة النصوص التجميعية والتي تصنف من اللغات ذات المستوي المنخفض(Low Level Language) ولا يعني هذا أنها لغة ضعيفة بل هي من أقوي اللغات علي الإطلاق ولكن يرجع سبب التسمية إلي أنها لغة قريبة الشبة من لغةالآلة (Machine Languages)بعكس اللغات عالية المستوي مثل البيسك والفورتران والتي تمثل نوعاً من اللغات الصديقة ذات وحدات البناء القريبة من لغة الإنسان لكنها في نفس الوقت ليست في قوة هذه اللغة.

س2 لماذا نحاول أن نتعلم لغة Assembly ؟


حينما تتعلم لغة Assembly ستعرف قطعاً ما هو الكمبيوتر؟!

أولاً: قد تبدو أجابه السؤال بسيطة لكنها معقدة جداً فأغلب المتعاملين مع الكمبيوتر في هذه الأيام لا يعرف سوي التطبيقات مثل الـ Windows و Internet و …… ولكن يجهل فعلا اللغة التي يتكلمها الكمبيوتر …… لذلك فحينما تحاول أن تتعلم Assembly فسوف تعرف قطعاً كل شئ عن هذا الجهاز من حيث برمجته أو مكوناته المادية وبذلك تتمكن من السيطرة الكاملة علي الكمبيوتر.

ثانياً: أن تعرفك بلغة Assembly يتيح لك اكتشاف حلول جيدة لكل المشاكل التي كنت تعاني منها سابقاً مثل كلمات سر الكمبيوتر وكيفية كسرها وأساليب التجسس وتطوير برامج بسيطة مقاومة للتجسس وكيفية مقاومة الفيروسات بل وكيفية تصنيع فيروسات صغيرة ومدمرة توجهها نحو أعداء الإسلام .

ثالثاً: بإمكانك استخدام هذه اللغة في التعديل الفعلي في أي تطبيق لسد ثغراته لمثل هذه التطبيقات سوف نتعرض لمثل هذه الأمثلة أن شاء الله.

س3 ما هي الأساسيات التي يجب أن أكون ملماً بها حتى أستطيع أن ابدأ في تعلم لغة Assembly ؟

- أن تعرف ما هو المعالج Control Processor أن تعرف ما هي شجرة وإصدارات المعالج Intel.
- أن تعرف ما هي الذاكرة RAM, ROM.
- أن تعرف ما هي وحدات الإدخال أو الإخراج.
- أن تعرف ما هي وسائط التخزين.
- أن تعرف ما هو النظام العشري Decimal.
- أن تعرف ما هو النظام الثاني Binary .
- أن تعرف ما هو النظام السادس عشري Hexadecimal.
- أن تعرف كيف تقوم بالتحويل من نظام إلي الأخر وعمليات الضرب والجمع.
- أن تعرف ما معني كلمةByte .
- أن تعرف ما معني كلمة Bit.
- الفرق بين الأنظمة 32, 16, 8 بت.
إذا لم تكن تعرف أياً من النقاط السابقة فاطلبوا من شرحها وسأشرحها لاحقاً ولكني أعتقد أن الكثير من الأخوة هنا يعرفون كل ما ذكرت آنفاً.


س4 ما هو الكود الآسكي وما استخداماته؟
الكود الآسكي ASCI هو اختصار لـ (American Standard Code for Information)

هو نظام تكويد للأرقام من 0 إلي 9 ولجميع الحروف وبعض العلامات الخاصة التي يستخدمها الكمبيوتر ويعتبر نظام التكوين الأسكي فعال وكافي لتكوين الأرقام والحروف مادامت في حدود 8 بت ولكن إذا زادت عن ذلك يعجز هذا النظام عن تكوين هذه التراكيب لذلك يستخدم هذا النظام من التكوين بصفة خاصة لتكوين النصوص فقط وذلك لأنة قائم أصلاً علي النظام الثنائي للتكوين (Binary) وقد تلاشت هذه المشكلة مع الإصدارات الحديثة للأنظمة المكونة 16،32 بت.

وكأمثلة لنظام التكوين الأسكي يمكنك الدخول علي نظام تشغيل الـ (DOS) (من خلال F8 في بداية تشغيل جهازك) وعند ظهور محث الدوس Dos Prompt أكتب الرموز الآتية ملاحظة استمرار الضغط علي Alt عند كتابة الكود.
الرقم صفر 48 Alt
الرقم1 49 Alt
الرقم9 57 Alt
الحرف A Alt 65
الحرف B Alt 66
الحرف Z Alt 90
الحرف a Alt 97
الحرف @ Alt 64

باستمرار تجريب بعد الأرقام (255 from 0 to)فسوف تحصل أيضاً علي بعض الرموز الغريبة والتي كانت تستخدم في رسم الجداول أيام زمن الدوس (الزمن الجميل).


ولكن ليست جميع رموز الكود الأسكي يمكن استخدامها حيث أن الرموز من 0 حتى 13 هي رموز خاصة بالتحكم في وحدات إدخال وإخراج الكمبيوتر فمثلاً ALT 13 تساوي الضغط علي ذر الإدخال فمثلا أكتب الأمر Dir ولا تضغط Enter ولكن أضغط علي Alt وأضرب الرقم 13 ثم أرفع يدك عن Alt.
C:\> Dir ALT 13

لذلك لا يفضل استخدام أول ثلاثة عشر رمز في تسمية الملفات.

كذلك إذا ضغط Alt و255 فلن تري شيئاً في محث الدوس
C:\>ALT 255
ولكنك بذلك تنشأ محرف(Character) قد يستخدم كاسم لملف او فهرس لا يمكن لغيرك أن يقوم بفتحة أو يدخل داخله إذا استخدمته في تسميته فهرس (راجع موضوع الأخ اسير عن خدعة الدوس).

س5 هل هناك طرق أخري غير الكود الأسكي لعرض البيانات داخل الكمبيوتر؟
حقيقة يوجد نظامان آخران وهما:-
- BCD method.
- Floating Point Representation.
والطريقة الأولي تعني Binary Coded Decimal أي النظام الثنائي للتكويد العشري وهي طريقة جيدة جداً أكثر من النظام الأسكي ولكن يوجد بها عيب خطير حيث لا يمكن إلا تكويد الأرقام من 0 إلي 99 ولكنها تصلح فقط لتمثيل الأرقام الضخمة جداً جداً وذلك بتقسيمها إلي مجموعات صغيرة بدون حدوث خطأ يذكر أثناء معالجتها ولكنها ليست مستعملة بكثرة.
أما الطريقة الثانية والتي تعني (نقطة الطفو) والتي تقوم ببساطة علي تقسيم الرقم إلي رقم عشري وأس (Power) كمثال: حينما يريد تمثيل الرقم 3425000 يمكن تمثيله رياضياً كالآتي 3.425x10^6

وبذلك نكون قد تعرضنا لاشهر أنظمة التكويد المستخدمة عالميا.

س6 ما هو الريجستر Registers ؟ (هام جداً)

حينما نتحدث عن Registers فأننا نتحدث عن لغة الآلة ولغة Assembly . ونتحدث عن الطريقة التي يفكر بها الكمبيوتر، الريجستر هو مكان تخزين مؤقت يمكن نقل البيانات إليه وأجراء عمليات معينة والحصول علي نتائج معينة.
والريجستر يتأثر تأثراً كبيراً بالبينة التي يعمل بها فالأنظمة ذات 16 بت كانت بهذا الشكل:
ax, bx, cx, dx, pb, si, di, sp.
ويمكن استخدامها كالأنظمة ذات 8 بت هكذا:
ax, (ah, al), bx, (bh, bl)
وبذلك أصبحت الأنظمة التي تقوم علي 32 بت اقوي من 16 بت أقوي من 8 بت ولكن لماذا؟
تخيل أنك تمتلك صندوقاً يحمل ثمان أسطوانات كأقصى ما يستطيع (يمثل هذا النظام 8 بت)
أنك باستخدام نفس هذا الصندوق تستطيع أن تضع به اثنان وثلاثون اسطوانة، وذلك بلغة الكمبيوتر يعني ببساطة أنة لنفس مساحة السواق الصلبة (Hard disk) فأنك تحصل علي مساحة تخزنيه أكبر (تقريباً بنسبة 40%) وكذا سرعة أكبر في الوصول للبيانات.

س7 كيف يستخدم المعالج الريجستري؟

مثال مباشر تخيل أنك تريد أن تجمع رقم 5 ورقم 7 يقوم الكمبيوتر بهذه المهمة كالتالي:
يقوم بنقل القيمة 5 إلي Registry ليكن ax
ثم يقوم بتنقل القيمة 7 إلي نفس الـ Registry ax
يقوم بعد ذلك باستعراض محتوي ax فيحد أنه 12.
طبعاً هناك عدة إجراءات تتم ولكن الطريقة لا تخرج عن ما قلت.

س8 ما معني أسماء الريجستري؟

نعرض هنا لأسماء هذه الريجستري؟
AX - Accumulator
BX - Base registry
CX - Counting registry
DX - Data register
DS - Data Segment register
ES - Extra Segment register
SS - Battery Segment register
CS - Code Segment register
BP - Base pointer register
SI - Source index register
DI - Destiny index register
SP - Battery pointer register
IP - Next instruction pointer register
F - Flag register


س9 كيف أشاهد هذه الريجستري في جهازي؟

ببساطة أذهب إلي البرنامج Debug – سنتعرض له لاحقا – وأكتب الأمر التالي
C:\>Debug
r-
وسوف تشاهد قيم الريجستري في جهازك.


المراجع

- Assembly Language Solid foundation.
- Programming using assembly.
- Assembly & Machine Language.
- C++ Programming & Assembly.
- University of Guadalajara (Assembly Language(
- البرمجة باستخدام لغة الآلة م/ محمد احمد البنــــــــــا




انتظــــــــر باقي الموضـــــوع
يا شباب اذا اعجبكم الموضوع فاخبروني حتي اكمله لكــــــــم..


Engineer غير متصل قديم 01-01-2001 , 05:27 PM    الرد مع إقتباس
المشاركة في الموضوع


[عرض نسخة للطّباعة عرض نسخة للطّباعة | ارسل هذه الصفحة لصديق ارسل هذه الصفحة لصديق]

الانتقال السريع
   قوانين المشاركة :
لا بإمكانك إضافة موضوع جديد لا بإمكانك إضافة مشاركات جديدة لا بإمكانك إضافة مرفقات لا بإمكانك تعديل مشاركاتك
كود في بي vB متاح الإبتسامات متاح كود [IMG] متاح كود HTML متاح



لمراسلتنا - شبكة سوالف - الأرشيف

Powered by: vBulletin
Copyright © Jelsoft Enterprises Limited 2000.