• 0
szerf

نحو بناء نظام تشغيل عربي

سؤال

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

أعتقد أن الكثير من المبرمجين العرب يتمنون ظهور نظام تشغيل عربي 100% وقد قرأت في هذا المنتدى عدة مقالات عن ذلك ووجدت أن:

-بعض الناس يعتقدون أن الأمر صعب بحيث يكاد يكون مستحيلا

-و بعضهم يعتقدون أنهم يمكن أن يصمموا نظام تشغيل قادر على أن يتفوق على وندوز ولينكس

-وبعضهم لا يرون فائدة من تصميم نظام تشغيل عربي

أنا شخصيا أرى أن الأمر ليس مستحيلا وأيضا لا يمكن لهذا النظام أن يتفوق بسهولة على الأنظمة الأخرى

ولكن...

يمكننا أن نحاول...

قد يقول البعض ان الأمر صعب جدا ومن غير المنطقي ان يقوم شخص ببرمجة نظام تشغيل يفي بحاجيات المستخدم اليوم

هذا صحيح

ولكن لينوس تورفالدز لم يصمم الأوبنتو 8.04 لكنه صمم نواة اللينكس التي تعمل من سطر الأوامر !!!

أي أن نظام التشغيل العربي يجب أن يبدأ من سطر الأوامر

ربما سطر الأوامر غير محبذ للكثيرين ولكن رحلة الألف ميل تبدأ بخطوة

والخطوة الأولى هي التعلم:-تعلم لغة الأسمبلي

-تعلم المقاطعات(interruption) الخاصة بالمعالج والبيوس

-الإطلاع على نظام تشغيل سابق

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

{الكتب التي تتحدث حاليا عن لغة الأسمبلي باللغة العربية قديمة ومعظمها موجه لتعليم السطو على البرامج أما الخاصة بتعليم المقاطعات فهي منعدمة}

ويجب أن يدخل الموضوع في حيز الجدية..

ولذلك أبدأ بهذا الملف الذي يحتوي على كيفية تصميم نظام تشغيل بسيط

والسلام عليكم

boot.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

156 إجابة على هذا السؤال .

  • 0
و أرجو من كل متخصص في هذا الأمر الإفادة ببعض الروابط أو كتب من تأليفه أو ترجمة بعض كتب أجنبية وتبسيطها أو حتى تقديم دروس عبر هذا المنتدى(الحسنة بعشر أمثالها)

اليك الروابط

http://www.arabteam2000-forum.com/index.php?showtopic=163227

http://www.arabteam2000-forum.com/index.ph...st&p=820290

{الكتب التي تتحدث حاليا عن لغة الأسمبلي باللغة العربية قديمة ومعظمها موجه لتعليم السطو على البرامج أما الخاصة بتعليم المقاطعات فهي منعدمة}

هل هناك انسان يريد بناء نظام تشغيل اتجاهه هو الكتب العربية فقط !!:)

اضافة

نحو بناء نظام تشغيل عربي, نظرة جديدة ومعقولة

صراحتا لا احب المواضيع العربية التى يكون عنوانها او هدفها هكذا بسبب انى اظن ان من يتكلم يكون شخص وليس مجموعة او جماعة وهذا الشخص فى اغلب الاحيان بل ومعظمها يظن بانه بتعلمه الشئ البسيط عن البرمجة قد ملك معظم العلم الخاص بمجال الكمبيوتر ويقول لنفسه دعنى ابدا فى كتابه نظام التشغيل الخاص بى وانا خغلب مايكروسوفت

والله يا جماعة الموضوع كبير جدا جدا وانا انصح اللى مش محترف فى البرمجة لا يفكر فى تلك الامور حتتعبه وبس

ومعظم المواضيع التى فى المنتدى على هذا النسق انتهت بكلام ولم ندخل فى الجانب العملى ولا حتى سطر كود واحد

والله الموفق

تم تعديل بواسطه eramax
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الكتاب السابق قرئته من قبل ،أخي أنا لاأحاول بث الإحباط لكن أقول الواقع التالي :

مازلنا لانعرف حتى الأساسيات .

مازلنا لانجيد البرمجة على أكثر من منصة .

مازلنا نجهل في عتاد الحاسوب .

هنا أتكلم بالحالة العامة فهل ترى أنه يمكن حتى بلانامج مثل Norton Ghost .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

للاسف كتب الكثير والكثير فى هذا الموضوع والكثير الكثير من روابط التعليم والكتب ايضا

ولكن ما فى شغل ، السبب ليس لاننا لا نملك الخبرة لا بل لاننا لا نملك روح الجماعة او بمعنى اصح

لمن نصنع النظام ؟ وهل اذا تم صنع سيتخلى الناس عن الويندوز ؟؟

كان زمانهم تخلوا عن الويندوز ايام ظهور الليونكس والذى هو النظام الذى انا اعتبره جميل جدا مع ان استخدامى له خفيف جدا :)

يعنى كل ما امل من الويندوز اروح له يومين وخلاص

وصناعة توزيعة ليونكس ليس بالشئ الصعب بس انت ممكن تصمم توزيعة ليونكس لوحدك

ويوجد الكثير والكثير من الكتب فى هذا الشئ واذا تريد ان تبدء بشئ ممكن تبدء من هناك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

يا جماعة أنا لا أقصد أن أبرمج هذا النظام لوحدي بالعكس يجب على الجميع أن يساهم في إعداد هذا النظام وهدفه الأول ليس الربح أو منافسة الويندوز بل تعلم أساسيات بناء نظام تشغيل يعني أن العرب في مجال نظم التشغيل مستهلكين بنسبة100% ومنتجين بنسبة 0% في الوقت الحاضر ومن الخطأ أن يكون الهدف منافسة ويندوز أو لينكس(الآن)ربما لاحقا الهدف الآن هو صناعة نظام تشغيل يشبه الدوس وليس هذا النظام يعمل بالضرورة على جميع المنصات من البداية يجب أن نختار المنصات الأكثر انتشارا في العالم العربي مثلا المعالج يجب أن يكون بنتيوم.

ربما يوجد الكثير من الروابط للكتب(لا يوجد في هذا الموضوع ولا واحد :huh: )ولكن مثل من يملك مكتبة كبيرة ولم يقرأ منها كتابا وهذا هو السبب في أننا لا نعرف الأساسيات ونجهل كيفية التعامل مع عتاد الحاسب أنا أتمنى أن يقوم احد المختصين بكتابة درس مختصر لا يأخذ أكثر من 10دقائق من وقته عن كيفية التعامل مع كرت الشاشة مثلا وآخر يكتب عن كيفية التعامل مع القرص الصلب وقارئ الأقراص المضغوطة(cd rom/dvd rom) وهكذا...

أما انعدام الأمل و العمل فهو السبب الوحيد للتخلف

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

العمل الجماعي ليس بالضرورة الإشتراك في كتابة نظام التشغيل ولكن بالأفكار والإستفسارات والإستشارات

أما صناعة توزيعة لينكس خاصة فهي أشبه بمنزل مبني بالأسمنت وينتظر الدهن والأثاث يعني هي عملية تجميل لقلب النظام فقط

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالتوفيق أخي الكريم ...

فكرة ممتازة ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الـــرباط، , موقع متخصص بهذا الموضوع , ويمكن الاستفاده والاثراء فيه حتى لانشتت انفسنا بكثرة المواقع والمواضيع المنفصله ..
0

شارك هذا الرد


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

وما هو دورك اذا ام دورك التنظيم والمشاهدةر فقط !

ربما يوجد الكثير من الروابط للكتب(لا يوجد في هذا الموضوع ولا واحد

لماذا تقول لا يوجد وقد اشارت الى لينك يحتوى على اسماء الكتب ؟

أما انعدام الأمل و العمل فهو السبب الوحيد للتخلف

من قال ان هناك انعدام امل ربما انعدام الامل عندك ولكن هناك الكثيرون من يكتبون انظمة تشغيل عربية 100% الان

وننتظر ظهور نواتجهم بفارغ الصبر

أما صناعة توزيعة لينكس خاصة فهي أشبه بمنزل مبني بالأسمنت وينتظر الدهن والأثاث يعني هي عملية تجميل لقلب النظام فقط

الجملة الوحيدة التى معك فيها

والله الموفق

تم تعديل بواسطه eramax
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

وكل ماتقدمه هو ادارة العمليات والذاكرة ونعريف وحدات الادخال والاخراج وسطر لادخال الاوامر

فانا قادر خلال 6 شهور ان احول هذا النظام الى بيئة رسومية متكاملة تنافس فى السهولة والجمال ويندوز ولينكس

ولكن !!!!!

1 - هى فين النواة اصلا

2 - البيئة الرسومية والنواة وحدهما غير كافيين

نحن نحتاج ايضا الى

1 - دعم الشبكات

2 - دعم الانترنت

وبالتاكيد نحتاج الى

1 - عدد كبير من المتطوعين للعمل فى المشروع

2 - ادارة لمشروع بهذا الحجم

3 - تسويق للمشروع اذا تم انتاجه بقوة

من خلال تجربتى فى مشروع البرمجة بدون كود العربى

اقولها وانا على ثقة

نحن كعرب مازلنا فى (أ) (ب) لتعلم ثقافة المشاريع مفتوحة المصدر

اما اذا كنت تنظر شركات تتبنى الموضوع

فلو اتحدت الشركات العربية كلها بكل مالديها من مطورين ومبرمجين

اتحدى ان يتم بداية العمل قبل ثلاث سنوات بعد الاتحاد

1 - الادارة لدينا ليست على مستوى عالى اساسا

2 - المطورين كل خبراتهم بعيدا تمام البعد عن نظام التشغيل (يعنى لسه هيتعلموا)

والمشكلة الاكبر

لا يوجد ابحاث علمية ننفرد بها حتى نتمكن من اضافة الجديد والمنافسة

وبعد ده كله ايه الحل !!!!!!!!!

اعمل الى تقدر عليه وشايف انك تقدر تعمله عشان ضميرك يستريح وكله على الله.

ودائما كل شىء ممكن ان يتغير وتغير الحال ليس مستحيل ان الله على كل شىء قدير

لهذا كلامى هذا صحيح حتى هذه اللحظة والله اعلم بالمستقبل

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ممكن واحد يساعدني في معرفة كيفية استعمال ال in و ال out ومعرفة اهم البورتات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ممكن واحد يساعدني في معرفة كيفية استعمال ال in و ال out ومعرفة اهم البورتات

اكيد ممكن ان شاء الله

بخصوص معرفة اهم البورتات فالبورت مش بنصنفها مهمة او غير مهمة

ولكن لكل بورت استخدام حسب انت عايز تعمل ايه تظهر الاهمية

يعنى التعامل مع الشاشة موضوع ولوحة المفاتيح موضوع اخر واقراص التخزين موضوع تانى وهكذا

شرح الامرين IN و OUT بسيط ان شاء الله

من جانب المعالج CPU

اولا ال Input port هى التى نستقبل منها البيانات ويتم وضعها فى مسجل Register خاص بالمعالج

وال Output port هى التى نرسل اليها البيانات تم وضعها فى مسجل Register خاص بالمعالج

اى بيانات يتم ارسالها او استقبالها يكون عن طريق Accumulator

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

IN AL,5
IN AX,5
IN EAX,5
IN AL,DX

حيث ان AL سعته 8 بت و AX سعته 16 بت و EAX سعته 32 بت

ورقم البورت فى الامثلة الثلاثة الاولى (خمسة)

واذا زاد عنوان البورت عن واحد بايت (8 بت) فانه يتم وضعه فى المسجل DX

امثلة لصيغ ارسال البيانات من المعالج الى البورت

OUT 9,AX
OUT DX,EAX

المثال الاول يرسل محتوى المسجل AX

الى البورت رقم 9

والمثال الثانى يرسل محتوى المسجل EAX

الى البورت الموجود عنوانها فى المسجل DX

الامر INS

يدخل عبارة STRING من البورت الى المعالج

الى Extra segment فى العنوان المحدد بـ DI

ويوجد INSB بمعنى Input String Byte

الذى يدخل حرف واحد وبالتلى يقوم بزيادة DI بمقدار واحد

(او انقاص DI بمقدار واحد حسب طريقة التخزين)

ويوجد INSW بمعنى Input String Word

وهنا DI يتم زيادته او انقاصه بمقدار اثنين

ويوجد INSD يمعنى Input String Double

حيث يتم زيادة او انقاص DI بمقدار اربعة

اذا تم ذكر متغير بعد INS مثل المثال التالى

INS LIST

فان LIST هو متغير ليس له علاقة بالبيانات التى يتم استقبالها

وانما حجم هذا المتغير يستخدم ليكون هو حجم البيانات التى يتم استقبالها

وهذا الحجم اما Byte او Word و Double Word

الامر OUTS

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

هذه البيانات موجودة فى Date Segment وتحدد من خلال المسجل SI

ملحوظة :المسجل SI يعنى Source Index

والمسجل DI يعنى Destination Index

وطبعا هناك صيغ مثل OUTSB و OUTSW و OUTSD لتحديد

حجم البيانات التى يتم ارسالها من المعالج الى البورت

اتمنى ان تكون هذه المقدمة جيدة

وللعلم هناك قسم خاص فى المنتدى للغة الاسمبلى

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا جزيلا لك

أما البورتات فهناك سؤال بسيط هل رقم البورت الخاص بكرت الشاشة في حاسوبي مثلا يطابق رقم البورت لكرت الشاشة في حاسوب آخر ام ان البيوس هو الذي يحدد ذلك وفي حالة اضافة قطعة الى الحاسوب كيف اعرف رقم البورت الخاص بها (مثلا كرت ستلايت)

وأرجو شرحا مبسط عن كيفية التعامل مع بورتات الشاشة والكيبورد والهارد ديسك (يعني البورتات الأساسية :happy: )

وعندي استشارة بسيطة هل من الأفضل نقل هذا الموضوع الى قسم الأسمبلي ام تركه هنا فهذا الموضوع هو عن استعمال الأسمبلي لإعداد نظام تشغيل

وشكرا...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
شكرا جزيلا لك

أما البورتات فهناك سؤال بسيط هل رقم البورت الخاص بكرت الشاشة في حاسوبي مثلا يطابق رقم البورت لكرت الشاشة في حاسوب آخر ام ان البيوس هو الذي يحدد ذلك وفي حالة اضافة قطعة الى الحاسوب كيف اعرف رقم البورت الخاص بها (مثلا كرت ستلايت)

وأرجو شرحا مبسط عن كيفية التعامل مع بورتات الشاشة والكيبورد والهارد ديسك (يعني البورتات الأساسية )

وعندي استشارة بسيطة هل من الأفضل نقل هذا الموضوع الى قسم الأسمبلي ام تركه هنا فهذا الموضوع هو عن استعمال الأسمبلي لإعداد نظام تشغيل

وشكرا...

اخى الكريم انت تسأل عن Computer Interfacing

وبما انك فى البداية يجدر بك ان تقرأ مراجعا اكاديميا عن هذا الموضوع اولا

اما بخصوص اختلاف البورتات من كارت شاشة لاخر

ستخدام البورت فى التعامل مع الشاشة تقنية قديمة

مفيدة فى التعامل مع انماط الشاشة البسيطة (عدد قليل من الالوان ) و ابعاد صغيرةاو حتى النمط النصىText mode

لكن هناك مقاييس موحدة مثل VESA وهى توفر عددا من المقاطعات Interrupts التى

تغنيك عن التعامل مع البورت وتقدم لك ماتريده

ولكن بالطبع لاتغنيك عن التعامل مع الذاكرة هذا شىء ضرورى لامفر منه.

اذا اردت ملخص لما قمت به على المستوى الشخصى فى هذا المجال (التعامل مع الشاشة من الصفر حتى البيئة الرسومية المتكاملة)

انصحك بكتاب (اعمق اسرار البرمجة - الجزء الاول - الباب الثالث)

http://www.kutub.info/library/open.php?cat=1&book=466

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

في الحقيقة الكتاب معقد قليلا :wacko:

والكود الخاص ببرمجة كرت الشاشة في المستوى low level غير مفهوم

ولكن حسب علمي يوجد نوعان من التواصل مع العتاد الأولى هي memory mapped I/O والثانية هي port mapped I/O

وأن الinterrupt تشبه في عملها عمل الfunction وهي تعتمد بالأساس على هاتين الطريقتين للتعامل مع الهاردوير

و أن الmemory mapped أفضل وأسرع فما هي الأماكن المحجوزة لقطع الهاردوير في الذاكرة ؟

أفيدوني الله يجازيكم خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

السلام عليكم ورحمة الله

موضوع كبير وحساس وأقول لا يمكن لنا بناء نظام متكامل ومعتمد إلا إذا وضعنا هيكلا كاملا لهذا العمل من فريق مبرمجين ومطورين ومسوقين وغيرها لكن لا أقول انها مستحيلة ولكن يوجد على حد علمي واحد من بلدي هو خريج جامعة درس 9 سنوات نظم تشغيل والله أعلم قام ببناء نظام تشغيل بس لا يوزعه ولا يعطيه إلا لمن يجد عنده الخبرة

المهم ممكن نستفيد من بعض المشاريع التعليمية مثل مينيكس www.minix.org نظام تعليمي بحت يمكن الإستفادة منه كثيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكم

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

ربنا يسهل ان شاء الله

موضوع كبير وحساس وأقول لا يمكن لنا بناء نظام متكامل ومعتمد إلا إذا وضعنا هيكلا كاملا لهذا العمل من فريق مبرمجين ومطورين ومسوقين وغيرها لكن لا أقول انها مستحيلة ولكن يوجد على حد علمي واحد من بلدي هو خريج جامعة درس 9 سنوات نظم تشغيل والله أعلم قام ببناء نظام تشغيل بس لا يوزعه ولا يعطيه إلا لمن يجد عنده الخبرة

المهم ممكن نستفيد من بعض المشاريع التعليمية مثل مينيكس www.minix.org نظام تعليمي بحت يمكن الإستفادة منه كثيرا

اتمنى لك التوفيق ان شاء الله

حينما انتهى من المشروع الحالى الذى اعمل فيه واحقق مااريد من خلاله

ان شاء الله رب العالمين

تكون المغامرة القادمة باذن الله شيئا مثيرا ولكن لااستطيع تحديده الان

اذا تعلق الامر بنظام التشغيل فلابد ان يكون بصورة جديدة لانى لاارضى

باعادة اختراع العجلة ولابد من انجاز علمى جديد حتى نصل للعالم كله

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

وجدت هذا الموقع الذي يحتوي على خريطة للinterruption هنا

لعلها تفيدنا في هذا الإنجاز إن شاء الله

الinterruption الخاصة بكرت الشاشة موجودة في المقاطعة 10 ولكنها تستلزم القليل من التوضيح -_-

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام

أظن أن النقاش سيخرج عن إطار الموضوع المهم فهو في الفائدة أخي szerf هذه بعض الدروس والوحيدة في المنتديات العربية ولم ولن تجد غيرها في أي منتدى عربي لعلها تساعدك في التعامل مع الشاشة

الشاشة الملونة وكيفية الكتابة بالألوان :

في الشاشة الملونة النصية توجد أربع صفحات مرقمة من 0 الى 3 وأبعاد كل صفحة هي 25 × 80 (أي يوجد 25 سطر مرقم من 0 الى 24 ويوجد 80 عمود مرقم من 0 الى 79

ولغرض الكتابة في مكان معين من الشاشة نقوم أولا بتحديد موقع المشيرة ونستخدم لذلك الوظيفة 02H التابعة للمقاطعة 10h إذ يوضع موضع الخدمة في المسجل ah ، وهنا نحتاج الى وضع رقم الصفحة في المسجل bh ويوضع رقم سطر الكتابة في المسجل dh ورقم العمود في المسجل dl . ثم نستعدي المقاطعة 10h .

مثال : طباعة الحرف d في مركز الشاشة (12و40)

 code		segment
main proc
assume cs:code
mov bh,0 ; number of page
mov dh,12 ; number of row
mov dl,40 ; number of column
mov ah,02h
int 10h
mov dl,'d'
mov ah,02h
int 21h
mov ah,4ch
int 21h
main endp
code ends
end main

نكمل الدرس المذكور في المحاضرة السابقة :

مسح الشاشة Clear screen :

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

أولا : نضع رقم السطر العلوي في المسجل ch ، ورقم السطر السفلي في المسجل dh .

ثانيا : نضع رقم العمود الأيسر في المسجل cl ، ورقم العمود الأيمن في المسجل dl .

ثالثا : نضع عدد الاسطر المراد مسحها في المسجل al واذا اريد مسح كامل الشاشة نضع فيه القيمة صفر .

رابعا : نضع الألوان المراد استخدامها في المسجل bh وهذا ما يدعى بخصائص البايت (وسنتوسع في شرحه في المحاضرة المقبلة) .

خامسا : نضع رقم الخدمة 6 ستعشري ف المسجل ah ، ونستدعي المقاطعة 10 ستعشري .

مثال1 : سنقوم بمسح الشاشة بالكامل ونستخدم لذلك اللون الأسود (رقمه صفر) للخلفية ، واللون الأبيض (رقمه 7) للكتابة)

الحل :

mov		ah,06h		  
mov al,00h
mov bh,07h ; 0 No. of background and 7 No. of text
mov ch,00h ; upper row
mov cl,ooh ; left column
mov dh,24 ; lower row
mov dl,79 ; right column
int 10h

مثال 2 : سنقوم بمسح الشاشة بمقدار أربعة أسطر (إذ تزاح الكتابة الى الأعلى) ، وهنا سنضع اللون الأزرق (1) للكتابة ، واللون الأبيض للخلفية (7) .

الحل :

mov		ah,06h		  
mov al,04h ; No. of cleared row
mov bh,71h ; 7 No. of background and 1 No. of text
mov ch,00h ; upper row
mov cl,ooh ; left column
mov dh,24 ; lower row
mov dl,79 ; right column
int 10h

على بركة الله نعود لاكمال الدروس ، وسنتوسع في شرح الألوان المراد استخدامها كما وعدناكم في المشاركة رقم 200 :

نلاحظ أن الألوان المراد استخدامها في الشاشة تحمل في المسجل bh أي أنها من نوع بايت واحد ، وهذا البايت يتم التعامل معه على أساس البت وبما أن البايت يتكون من 8 بتات ، لذلك فإن القيمة المحملة في المسجل bh سيتم حسابها كما يلي :

1 ـ رقم البتات من اليمين الى اليسار هو من 0 الى 7

2 ـ نأخذ أول أربعة بتات وهي خاصة بلون الكتابة وأرقامها من 0 الى 3 وتنطبق عليها العبارة التالية IRGB وهذا يعني أن الحرف B هو للبت رقم 0 والحرف G هو للبت رقم 1 وهكذا ...

3 ـ الحرف B يعني اللون الأزرق والحرف G يعني اللون الأخضر والحرف R يعني اللون الأحمر والحرف I يعني شدة اللون فإذا أردنا اللون الأحمر للكتابة فتكون قيمة أول أربعة بتات من اليمين هكذا 0100 بالنظام الثنائي ، وإذا أردنا اللون الأزرق فيكون 0001 وإذا اردنا اللون البني فيكون مزيج من اللون الأحمر واللون الأزرق أي 0101 وإذا اردنا اللون الأصفر فيكون مزيج من الاحمر والازرق وشدة الاضاءة أي 1101 ويمكن تجربة الألوان كما تشاء إذ يتوفر لديك فقط 16 لون .

4 ـ البتات من رقم 4 و 5 و 6 هي مثل البتات من 0 و1 و 2 ولكن هذه المرة تخصص كلون للخلفية .

5 ـ البت رقم 7 يسمى blinking أي وامض فاذا اردت الكتابة أن تكون وامضة ضع القيمة 1 في هذا البت .

مثال : نريد الكتابة بلون احمر على خلفية ازرق وامضة

الحل : نضع القيمة التالية في المسجل bh :

10010100 وهي تعادل بالنظام العشري 148 وتعادل بالنظام السداسي عشر 94

تمرين : ارسم خمس مربعات كل مربع بلون يختلف عن الآخر على أن يطون ابعاد المربع الواحد 20 × 20

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا أخي hatem

ولكني نسيت أمرا في غاية الأهمية وهو:إذا كان هذا النظام يعمل في الوضع المحمي فلن نستطيع الإستفادة من المقاطعات :(

اذن المقاطعات لن نحتاج اليها إلا لبدأ نظام التشغيل.

(أرجو من المختصين إيجاد حل لهذه المعضلة)

و لنفترض أن نظام التشغيل في البداية لن يعمل في الوضع المحمي اذن أول خطوة يجب القيام بها بعد دراسة كيفية عمل الشاشة النصية هي دراسة كيفية عمل الكيبورد لنتمكن من ادخال بعض الأوامر مثلا ومن ثم دراسة كيفية عمل الهارد ديسك والفلوبي ديسك وأنظمة الملفات

وأنصح أي شخص يرغب بتجربة التعامل مع الهارد ديسك باستعمال احد المحاكيات مثل virtuel pc كي لا يجازف بتخريب الهارد الخاص به

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ياجماعة ممكن تساعدوني في فهم هذه المشكلة:

حسب علمي يوجد في المعالج 4 مسجلات تدعى segment register:

أول مسجل يدعى cs وظيفته تحديد عنوان التعليمات (مثل mov cmp ...)

الثاني يدعى ds وظيفته تحديد عنوان البيانات (مثل byte word dword)

الثالث يدعى ss وظيفته تحديد عنوان المكدسة

الرابع يدعى es وظيفته تحديد عنوان البيانات الإضافية

عندما يبدأ البيوس ويجد قطاع الإنطلاق يقوم بتحميله في الذاكرة ابتداءا من العنوان 0x7C00 ويعين الIP على العنوان 0x7C00 والcs على العنوان

0x0000 اذن الحاسب سيبدأ بالتطبيق ابتداءا من 0x7C00 الى هنا لايوجد مشكلة لكن المشكلة هي أن قطاع البيانات يبدأ من نفس العنوان أي

0x7C00 في جميع الأمثلة التي شاهدتها ألا يمكن أن يتسبب ذلك في كتابة بيانات في مكان التعليمات وبالتالي تغير المعالج من معالجة التعليمات إلى

معالجة البيانات مثل ما يحدث في الثغرات :unsure:

مع العلم أنني عندما غيرت قيمة ds إلى 0x9000 أصبح يكتب رموزا غريبة

من يستطيع حل هذا اللغز!!!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
من يستطيع حل هذا اللغز!!!

المسالة مش لغز خالص - كل الحكاية انت رحت بتفكيرك بعيد شوية

اذن الحاسب سيبدأ بالتطبيق ابتداءا من 0x7C00 الى هنا لايوجد مشكلة لكن المشكلة هي أن قطاع البيانات يبدأ من نفس العنوان أي

0x7C00 في جميع الأمثلة التي شاهدتها ألا يمكن أن يتسبب ذلك في كتابة بيانات في مكان التعليمات وبالتالي تغير المعالج من معالجة التعليمات إلى

معالجة البيانات مثل ما يحدث في الثغرات

مش مشكلة خالص ولايحدث خلط بين البيانات والتعليمات لان هذا شىء وهذا شىء اخر

ودمج البيانات مع التعليمات فى segment واحد شىء متعارف عليه

وهو ضمن انواع نماذج التخزين فى الذاكرة التى تدعمها المترجمات

اخى الكريم اليك الرابط التالى فهو مفيد لك ان شاء الله

http://en.wikipedia.org/wiki/C_memory_model

والله الموفق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك أخي سمير

ولكن هل يمكن أن توضح لي لماذا لم يعمل البرنامج حينما غيرت قيمة ds مع العلم أنني أستعمل nasm

وعندي طلب صغير :wub: : أرجو أن تدلوني على مرجع للسي يعينني على البرمجة ويكون باللغة الفرنسية

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
شكرا لك أخي سمير

ولكن هل يمكن أن توضح لي لماذا لم يعمل البرنامج حينما غيرت قيمة ds مع العلم أنني أستعمل nasm

وعندي طلب صغير : أرجو أن تدلوني على مرجع للسي يعينني على البرمجة ويكون باللغة الفرنسية

وشكرا

حينما غيرت DS فانها حينما يحدد المعالج عنواين البيانات فانه يستدل على العنوان مستخدما DS

ونظرا لانه تغير محتواه بدون تغير مكان البيانات - هنا اصبح المعالج يبحث عن البيانات فى وادى بينما

توجد البيانات فى وادى اخر - هذا كل شىء.

بخصوص كتب لغة C - لقد اتقنت اللغة من خلال تعلمها اولا من كتاب The complete refrence

المؤلف Herbert Schildt

هذا الكتاب من اشهر كتب اللغة التى حققت مبيعات فوق المليون نسخة (حسبما ذكر فى مقدمة الكتاب)

ولن يقدم الكتاب اكثر من فهم لاساسيات اللغة ولهذا ستحتاج الى التدريب المتواصل للوصول الى اتقان فنيات اللغة ويفضل ان

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

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

ذلك لانك تثق ان البرمجة وسيلة وحرية الفكر متروكة لان الافكار تختلف نتائجها فيما يتعلق بالموازنة بين الكفاءة والمتطلبات والانتاجية.

والله الموفق

تم تعديل بواسطه محمود سمير
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .