![]() |
|||||||||
|
|
|||||||||
|
|||||
|
نظرة قريبه على نظام تشغيل مبسط
للأسف الأخ Cold Zero لم يقم بتكلمة موضوع بناء نظام التغشيل و لحرص بعض الأخوان و الأخوات في المنتدى لمعرفة المزيد عن طريقة برمجة نظم تشغيل سأحاول بقدر المستطاع شرح بعض الأمور المتعلقه بذلك و لكن بشكل مبسط ، و لمن اراد المزيد باستطاعته ان يبحث في الانترنت فالمصادر كثيره. و سننتظر الاخ Cold Zero لتكملة موضوعه في بناء نظام التشغيل الخاص به أمّا هذا الموضوع فهو بشكلٍ عام.... لبناء نظام تشغيلي نحتاج أولا لبعض الأدوات البسيطه 1-emu8086 - assembler و باستطاعتكم تحميل البرنامج من الموقع التالي ، http://www.emu8086.com/ScreenShot.html 2- RawWrite for Windows رابط التحميل http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm في البداية و عند تشغل جهاز الكمبيوتر سيقوم بتحميل 512 بايت من Sector رقم 1 في الـ Head رقم 0 في cylinder رقم 0 من القرص المرن الى عنوان الذاكرة 0000h:7C00h و اذا لم تتم هذه العملية بشكل صحيح سيقوم الجهاز بمحاولة تحميل الـ 512 بايت من نفس المكان و لكن من القرص الصلب في الجهاز. في هذا المثال المبسيط سأوضح كيفية برمجة نظام تحميل صغير في قرص مرن للإسباب التاليه 1- لن تضطر إلى الغاء نظام التشغيل الموجود لديك كي تقوم بتجربة هذا البرنامج . 2- من السهل أن نقوم بتعديل و الإضافة على الـ Boot Record في الأقراص المرنه. هذا البرنامج الصغير سيقوم بعملية الـ Booting من قرص مرن وهو مكتوب بلغة الأسمبلي كود:
; التوجيه لإنشاء ملف التحميل :
#MAKE_BOOT#
; تم تحميل الملف الى عنوان الذاكره
; 0000:7C00,
; لذا سيبدأ المترجم الآن بإجراء العمليات المناسبه و الضروريه لذلك
ORG 7C00h
; تحميل الرسالة التي نريدها في العنوان SI:
LEA SI, msg
; سنقوم بطباعة الرسالة التي قمنا بتحميلها عن طريق الأوامر التاليه:
MOV AH, 0Eh
print:
MOV AL, [SI]
CMP AL, 0
JZ done
INT 10h
INC SI
JMP print
; سيتوقف البرنامج هنا بانتظار الضغط على اي زر:
done:
MOV AH, 0
INT 16h
; سنقوم بتخزين المعلومات الضروريه في العنوان التالي
; 0040h:0072h:
MOV AX, 0040h
MOV DS, AX
MOV w.[0072h], 0000h
JMP 0FFFFh:0000h
new_line EQU 13, 10
msg DB 'This is our first boot program'
DB new_line, 'Press Any Key To Reboot Your PC', 0
و قم بالضغط على Compile and Emulate سيقوم البرنامج بالتأكد من صحة البرنامج و من ثم تحميل الملف.boot مباشرة إلى عنوان الذاكرة 0000h:7C00h و من ثمّ نستطيع تشغيله كأي برنامجٍ عادي... أو من قائمة Virtual Drive نقوم باختيار Write 512 bytes at 7C00h to Boot Sector بعد أن ينتهي البرنامج من هذه العملية باستطاعتنا الآن أن نختار من قائمة Virtual Drive الأمر Boot from Floppy - باستطاعتنا ان نقوم الآن بنسخ الـ Virtual Flopp و هو الان باسم FLOPPY_0 او نسخ الملف .boot الى قرصٍ مرن و نقوم بتشغيل جهاز الكمبيوتر عن طريقه . و أنصح باستخدام البرنامج الثاني الذي ذكرته في البداية RawWrite لكتابته على القرص. سأقوم بإرفاق ملف يحتوي على نظام تشغيل مصغر باستطاعة الجميع القاء نظره على البرنامج. |
![]() |
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
| أدوات الموضوع | إبحث في الموضوع |
| تقييم هذا الموضوع | |
|
|