الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدرس السادس >>> بداية العملى (Developing a simple Bootloader)

بدأه MohamedIBrahim في 21 مارس 2011 · 10 رد · 1,780 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الان واخيرا سنبدأ فى الدروس العملية

ودرس اليوم بعنوان Developing a simple Bootloader

او تطوير قرص اقلاع >>>>الترجمة العربية

وبدون مقدمة لانى شخصيا مليت من المقدمات ويا ريت احد من المصممين يعمل شعار للدورة وعليها

اسم الفريق علشان احطه ببداية المواضيع :) :)

الان استعد ها هى اللحظة التى انتظرناها كثيرا وهى بداية التطوير العملى

الاول ادعى لليبيا واليمن وكل البلاد العربية :wink: :cool:

دعنا نتذكر معلومات مهمة عن قرص الاقلاع (Bootloader) ملاحظة لا اعلم ان كانت ترجمتى للمصطلح صحيحة ام لا

1- يتم تخزينها بواسطة MBR

2- تاخذ الالقطاع الاول من الDisk

3- الحجم الاقصى والادنى ومهما فعلت فيجب ان تكون 512 Byte

4- يتم تحميلها بواسطة BIOS INT 0x19 فى العنوان 0x7C00

الان افتح اى محرر نصوص حتى notpad يمشى الحال

انا مثلا هستخدم محرر++ notepad مع انى كنت عاوزو استخدم Visual Studio 2010 بس بنت خالتى كانت سألتنى البرنامج ده بتاع ايه (++ notepad) قولتلها ليه

قالتلى اصله شكله حلو وعاجبنى :lol: :P :)

المهم اى محرر ان شاء الله بيمشى الغرض

هنعمل ملف جديد ونسميه (Boot1.asm)

طبعا asm لاننا هنكتبه بلغة الاسمبلى ولا حد معترض :excl:

;*********************************************
;	Boot1.asm
;		- A Simple Bootloader
;
;	Operating Systems Development Tutorial
;*********************************************

org		0x7c00				; We are loaded by BIOS at 0x7C00

bits	16					; We are still in 16 bit Real Mode

Start:

	cli					; Clear all Interrupts
	hlt					; halt the system

times 510 - ($-$$) db 0				; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55					; Boot Signiture

معظم الكود طبعا جاء ليكون مفاجاة للكثير منكم >>> وانا فى البداية اذ اننى قعدت ساعة على ما

كتبت كلمة Development صح وانا كنت حالف انى ما انقلها من جوجل حتى لو قعدت سنتين اجيبها صح :lol: :lol: عادى يا جماعة انا بحب بس نطلع من جو الكئابة فى الدورات

نرجع

الان انا هقوم بشرح كل سطر على حدا ان شاء الله ركز معاى

    org 0x7c00 ; We are loaded by BIOS at 0x7C00

تذكر ان البيوس يتم تحميله فى العنوان 0x7C00 وهذا الكود سيجعل التعليمة الاولى تتجه الى 0x7C00

    bits 16 ; We are still in 16 bit Real Mode

لماذا 16 وليس 32 ببساطة لان كل عائلة معالجات x86 على النظام القديم للانظمة (Dos )

لذا فهى تقلع فى الوضع 16 bit وليس 32

وهذا يعنى شيئين

1- ان اقصى مساحة للذاكرة هى 1mb

2- ونحن مقيدين هنا بالمسجلات من النوع 16 bit

وسنحتاج الى تحويل وضع الجهاز الى الوضع 32 لكننا سنقوم بذلك لاحقا

    times 510 - ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0

انا اتمنى ان يكون هذا السطر سهل ففى Masm وNasm علامة الدولار $ تدل على عنوان السطر

وهى هنا من المفترض ان تدل على 0x7C00

اذا $-$$ تقوم باعادة كل الارقام من البايتات من السطر الحالى الى البداية

    dw 0xAA55 ; Boot Signiture

هذا يحتاج بعض التوضيح

تذكر ان البيوس INT 0x19 يبحث عن قرص اقلاع يقلع منه لكن كيف يتعرف على ان هذا هو قرص او ملف يمكن الاقلاع منه ؟؟ :ohmy: :cool:

هذا ما يسمى boot signiture فهو يقوم بالقفز الى 511 byte فاذا كان 0xAA واكان byte 512 0x55

فان البيوس سيقوم بالتعرف عليه وسوف يقول بتحميله وتنفيذه سهلة اليس كذلك ؟ :wink:

ولان الboot signiture ينبغى ان يكون فى اخر سطرين فاننا نستخدم الTimes وهى كلمة تتبع لغة الasm وتستخدم لحساب اختلافات الاحجام من 510th byte ثم 512th byte

كده اظن الكود كاملا مفهوم وسهل جدا <>>>>> اى خدمات يا باشا

الان نأتى الى مرحلة الترجمة

Assembling with NASM

وطبعا المفترض منك ان تكون قد حملت NASM من درس الادوات المطلوبة

لكن ما هى طريقة الترجمة سنستخدم الامر التالى

    nasm -f bin Boot1.asm -o Boot1.bin

الشرح

-f تخبر المترجم NASM ما هو امتداد ونوع الملف المخرج وهنا الملف BINARY

خيار -o يخبر المترجم NASM يستخدم للحصول على ملف بامتداد اخر وهنا سيكون Boot1.bin

بعد الترجمة ينبغى ان تحصل على ملف باسم

Boot1.bin

وهذا هو القرص الخاص بالاقلاع

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

والى هذا الدرس القاكم على خير

تحياتى لكم

اخوكم محمد ابراهيم

1

GoodBye

#2

يسلمو اديك اخي على الشرح

اقتباس

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

والى هذا الدرس القاكم على خير

بس سؤال عمليه وضع كود الboot على floppy نفسهاعلى cd room

لانو الاجهزة الحالية مثل الابتوب ما فيها floppy

وشكرا

:mellow: :mellow:

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#3
ayash كتب:

يسلمو اديك اخي على الشرح

بس سؤال عمليه وضع كود الboot على floppy نفسهاعلى cd room

لانو الاجهزة الحالية مثل الابتوب ما فيها floppy

وشكرا

:mellow: :mellow:

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

بخصوص سؤالك

فى الدورة هذه لا فرق بين cd-rom و floppy لانهم كمكونات مادية لن نستخدمهم

بل سنستخدم

VFD

PartCopy

Bochs

وهما 3 برامج محاكية لما يحدث للجهاز نفسه

وتجدهم فى درس المتطلبات

تحياتى لك

1

GoodBye

#4

:P :P :P

مشكور غلبتك

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#5
ayash كتب:

:P :P :P

مشكور غلبتك

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

بعدين هو فيه حد غيرك انت و2 كمان

وانا بحب فلسطين واهلها جدا

والدرس الجاى هيفهمك اكثر

1

GoodBye

#6

الله اخليك صراحة مش عارف ايش بدي احكيلك من الخجل :happy: :happy:

إن شاء الله الي ابتعملو في ميزان حسناتك

مشكور

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#7

شكرا لك اخي محمد على الدرس الرائع و الحمد لله بفضل شرحك فهمت كل شيء و الحمد لله :lol: :happy: و اتمنى ان تضل دائما هكدا :wink: :) :blush: و لكن لدي سؤالين :

1 - اولا انا لدي ال floppy في جهازي فهل يمكنني استخدامه او سنختدم فقط برنامجا لتشغيل الانظمة التخيلية مثل virtualbox ( انا استخدمه ) .

2 - انا قمت بوضع الملف boot1.asm في المجلد nasm تم قمت بترجمته واعطاني الملف boot1.bin وعندما اردت تشغيل الملف لم يشتغل , فهل هناك مشكلة و هل وهده الطريقة التي اتبعتها صحيحة :blink: .

و شكرا لك جزيل الشكر . :blush:

منتداى الخاص : منتدى البرمجة و تطوير المواقع و المنتديات , هندسة البرمجيات و خوارزمياتها ... :

nick.mam9.com

و واحد اخر للاعلان المجاني , اعلن معنا عن مواقعك او منتدياتك او مشاريعك من دون تسجيل :

google-pub.mam9.com

#8
ayash كتب:

الله اخليك صراحة مش عارف ايش بدي احكيلك من الخجل :happy: :happy:

إن شاء الله الي ابتعملو في ميزان حسناتك

مشكور

العفوا اخى الحبيب

انا احب الابطال الشجعان الذين يقفون فى وجه الاحتلال الغاصب

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

nickelodeon كتب:

شكرا لك اخي محمد على الدرس الرائع و الحمد لله بفضل شرحك فهمت كل شيء و الحمد لله :lol: :happy: و اتمنى ان تضل دائما هكدا :wink: :) :blush: و لكن لدي سؤالين :

1 - اولا انا لدي ال floppy في جهازي فهل يمكنني استخدامه او سنختدم فقط برنامجا لتشغيل الانظمة التخيلية مثل virtualbox ( انا استخدمه ) .

2 - انا قمت بوضع الملف boot1.asm في المجلد nasm تم قمت بترجمته واعطاني الملف boot1.bin وعندما اردت تشغيل الملف لم يشتغل , فهل هناك مشكلة و هل وهده الطريقة التي اتبعتها صحيحة :blink: .

و شكرا لك جزيل الشكر . :blush:

الحمد لله انك فهمت الدرس

بخصوص السؤال الاول

يمكنك استخدام الfloppy ألخاص بك لكن عندما ساشرح ساشرح على bochs وهو مثل virtualbox

بخصوص السؤال الثانى

:lol: :lol: :lol: :lol: بالطبع لن يعمل معك لان ملفات bin لا تعمل من الويندوز ولا اللينكس

وهو برنامج اقلاع نظام يجب استدعائوه من البيوس فقط ليعمل ويتم التنفيذ

عموما الدرس السابع بضعه قريبا وانت ستفهم كل شئ ما ان تقرأه وتطبقه

وتحياتى لك

1

GoodBye

#9

شكرا لك اخي على التوضيح , و رغم انني استخدم ال virtualbox الا انني من اجلك سوف استخدم bochs المهم انه مثل ال virtual box .

منتداى الخاص : منتدى البرمجة و تطوير المواقع و المنتديات , هندسة البرمجيات و خوارزمياتها ... :

nick.mam9.com

و واحد اخر للاعلان المجاني , اعلن معنا عن مواقعك او منتدياتك او مشاريعك من دون تسجيل :

google-pub.mam9.com

#10
nickelodeon كتب:

شكرا لك اخي على التوضيح , و رغم انني استخدم ال virtualbox الا انني من اجلك سوف استخدم bochs المهم انه مثل ال virtual box .

As You want

كما تريد لكنى ساشرح الاسهل

لان اساسا الدورة هتدخل فى الثقيل والصعب

لكن انا اريد تسهيل وتبسيط كل شئ الى درجة كبيرة اى اننى اريد جعل تطوير نظام التشغيل

لدى المبرمجين العرب الى شئ اسهل بكثير مما يعتقدون

/index.php?showtopic=238635

هذا الدرس الجديد تابعه لتعرف استخدام المحاكى bochs

تحياتى لك

1

GoodBye

#11

شكراااااااااا

جزاك الله خيرا

مواضيع مشابهة