هل كل ما نكتبه يسمى برمجه للكمبيوتر أم برمجه لنظام . لماذا لا يعمل أي برنامج في أي نظام تشغيل رغم أنه مكتوب 01 فقط
شو رايكم نبحر مع داله واحده ونتتبعها لين ما نوصل داخل المعالج وتعرف كيف تنفذ بأدق التفاصيل
لو كتبت مثلا داله في نظام تشغيل وندوز أو أي نظام وتريد أن تطبع كلام على الشاشه إنت تتوقع تمر بكم مرحله
في نظام الوندوز مجموعه من المراحل
المرحله الأولى : الإتصال بداله في نظام التشغيل في مستوى البرنامج
هذي المرحله معروفه وهي الي نشوفها مثلا داله إظهار مسج للمستخدم يتصل البرنامج بمكتبه الربط
user32.dll
المرحله الثانيه : تجميع الداله
طبعا إنت تكتب داله واحده وفي الحقيقه إن نظام التشغيل يرسل في تنفيذ عشرات أو مئات الدوال أحيانا
إلى هنا ونحن داخل إطار البرنامج أو بصيغه أخرى في نفس مستوى البرنامج
المرحله الثالثه : مرحله الإمتيازات
في هذا المرحله تسير العمليه أعقد شوي ولها إسم وهي البوابات البوابات كثير من المبرمجين
أعتبروها أعقد شيء في معرفه ما يقوم به نظام التشغيل وهي ميزه توفرت في معالجات النمط المحمي 32 بت
شو هي البوابات:
مثلا إنت تبرمج في نمط 32 بت حاول إنك تستدعي مقاطعه للبويس مثلا ما بتقدر. أعتقد إنك بديت تفهم
لأنه غير مصرح لبرنامجك بأن يتعدى ذاكرته الوهميه ونظام التشغيل قاعد بين برنامجك وبين العتاد
وتسير العمليه بهذي البساطه برنامجك يرسل لمكتبه الربط التي في مستواه أمر إظهار على الشاشه تقوم المكتبه
بتجميع الأمر وترسله عبر بوابه لمنطقه في نظام التشغيل ذات مستوى أقل
في هذي المرحله قسم من الذاكره وهي البوابه تسمح لبرنامج نواه نظام التشغيل بأن يمرر الكود المطلوب
تنفيذه إلى برامج مقيمه في الذاكره هذه البرامج مصرح لها بمحاكاه للعتاد وهي تحت المستوى 0 تقوم هذه البرامج ببعض الخطوات
إما إرسال مقاطعه للبويس أو مقاطعه للدوس أو برمجه مباشره للذاكره أو عن طريق سواقات الأجهزه
الحين دخلنا في الموضوع بكمل الشرح للطباعه على الشاشه لكن شو رايكم نبدأ حبه حبه يعني ما نريد نطبع صورة بمليون لون
نريد نطبع حرف بلون واحد وبعدين بنكمل المليون لون
أكيد حرف واحد وبلون واحد ما يريد شغل كثير نظام التشغيل على طول بيرسل مقاطعه للدوس
int 21
هل تتوقع ينتهي الأمر لا
بعد مايستلم نظام الدوس الأمر يرسل مقاطعه للبويس
int 10
هل تتوقع ينتهي الأمر لا
الحين تبدأ البرمجه المباشره للذاكره
ملاحظه : البرمجه المباشره في الذاكره يمكن ما تفهمها مو لأنها صعبه لأنها تحتاج منك حفظ مواقع الذاكره وكل بايت شو معناه
مثلا الحين نريد نكتب حرف واحد وبلون واحد ندور على ذاكره الشاشه أوحاديه اللون بدايه عناونها
address 0xB800:0000
أي معلومه تكتبها في هذا العنوان تظهر مباشره على الشاشه أما طريقه تنسيق البيانات
يقرأ كل إثنين بايت على أنه إظهار حرف البايت الأول يمثل الحرف والبايت الثاني تنسيق أو لون الحرف
مثلا لو كتبت في هذا العناون البايتين
0x41 0x09
سيظهر في الشاشه حرف A واللون أزرق وهكذا كل إثنين بايت حرف ولون
برنامج المثال بلغه الإسمبلي:
push bp mov bp,sp sub sp,0004 mov word ptr [bp-02],0xB800 mov word ptr [bp-04],0x0000 les bx,[bp-04] mov byte ptr es:[bx],0x41 inc word ptr [bp-04] les bx,[bp-04] mov byte ptr es:[bx],0x09 mov sp,bp pop bp
نفس المثال
لتبسيطه أكثر بلغه السي
char far *addr; addr=(char far*)0xB8000000; *addr=0x41; addr++; *addr=0x09;
أكتب الكود وترجمه ينتج برنامج يظهر حرف بلون واحد شغله على أي معالج إنتل في العالم بيشتغل دون نظام تشغيل أو غيره
لو تحبو تكملوا إلى داخل المعالج يتم ترجمه الكود إلى نظام هكس ثم نظام ثنائي ولنفرض أنه ترجم بهذه الطريقه
10101011100110111110100011111
يرسل للمعالج ولقسم يعرف بقسم التنفيذ كيف يفهمها يستخرج أول بايت ويعيده للنظام الهكس = 55
يبدأ يسوي لها مقارنه إذا تساوي 0 التعليمه هي
ADD mem/reg,reg (byte)
وهكذا إلى أن يوصل إلى 55 وهي
push bp
يحسب كم حجم التعليمه ومن ثم يبدأ يقارن مع التعليمه الثانيه بإختصار فك تجميع
للمعلومات أكثر بشأن أي تعليمه تفضل
http://www.angelfire.com/rnb/byte/x86opcod.html
-------------------------------------
ماذا نستفيد من كل هذا ونحن في عام 2004
هذا الطرق التي قرأتوها نفذت وكتبت قبل عشرين سنه ؟؟؟
خلونا نتقدم حبه حبه لين من نوصل إلى طرق وأساليب اليوم النمط الرسومي والنوافذ
أوال ماتثبت النظام وقبل ما يتعرف على الأجهزه تلاحظ إن الشاشه حجمها 640 في 480 وبست عشر لون
وهو النمط القياسي قبل التعريف
هذا النمط ما يتعامل مع الحروف يتعامل بالبكسل وهي نقطه وتم إظهارها بكتابه صف من البايتات لعنوان الشاشه الرسومي وهو
address 0xA000:0000
يتميز هذا النمط بوجود مسجلات وتعرف ب مسجلات ذاكره العرض
وهي
MISCELLANEOUS REGISTER
SEQUENCER REGISTER
CRTC REGISTER
GRAPHICS CONTROLLER
ATTRIBUTE CONTROLLER
هذه المسجلات عباره عن مواقع في الذاكره تقرأ منها الشاشه خصائص الإظهار والعرض والإرتفاع ...وكل المعلومات المطلوبه
يتم الوصول إلى هذه المسجلات عن طريق المنافذ وكل مسجل له مجموعه من العناوين للكتابه أو للقرائه أو لتحديد المسجل
أعتقد إن الشرح ما يكفي ولذلك ستجد في الملف المرفق
مثال مع شرح تفصيلي لكيفيه إظهار الشاشه ب 16 لون أو حتى 24 بت
مع أساليب متقدمه في البرمجه المباشره للذاكره
بعد ما تقرأ الدروس المرفقه وتجربها ويكون كل شيء مفهوم سنتابع بقيه الدرس
ملاحظه : إذا كانت أي فكره في الشرح غير مفهومه ضعها ليتم الرد عليها
ومع السلامه
