سلام!
حال خوشحالتون چه طوره؟
خوبید؟
آره من با آموزش دوم سیستم عامل نویسی اومدم!
خوب قبل از هر چیز, باید اینا رو کامپیوتراتون نصب باشه
البته برا این آموزش
بعدا بیشتر میشن
خوب!:
nasm که یه اسمبلره و کدای اسمبلی رو کامپایل میکنه
میتونید از
اینجا
دانلود کنید!
حجمش کمتر از یه مگابایته
bochs: یه مجازی ساز حرفه ای که خودمم دارم ازش برا نوشتن AmirOS استفاده میکنم!
میتونید از
اینجا
بگیریدش
اما!
بعد از دانلود nasm, میخوایم یه بوت لودر کوچولو بنویسیم!
اگرچه که نمیخوایم برا سیستم عاملمون بوت لودر بنویسیم!, این آموزشو فقط برا این اختصاص دادم که با بوت لودر آشنا بشید
خوب!
این کدو یه نیگاهکی بهش بکنید!
;OS development tutorial, part 2
bits 16 ;we are in 16 bit real mode
org 0x7C00 ;the bootloader load’s from here
;we can write org 7C00h instead of org 0x7C00
times 510 – ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0
dw 0x55AA ;the bios bootloader signature
حالا به ترجمه کد میپردازیم!
خوب ; نشونه یه توضیحه و باید یه خط باشه
البته تو اسمبلی نه تو C++
خط بعدی که bits 16 باشه میگه که کدمون ۱۶ بیتیه!
مگه ما نمیخوایم یه سیستم عامل ۳۲ بیتی بنویسیم؟
چرا! میخوایم!
خوب دیگه چرا bits 16
چون وقتی کامپیوتر میاد بالا به صورت پیشفرز رو حالت ۱۶ بیتیه! و بوت لودر باید رو ۱۶ بیت اجرا بشه
اما:
real mode
real mode در حقیقت یه موده که رو ۱۶ بیتی استفاده میشه!
چند تا مود داریم:
- real mode که برا ۱۶ بیته
- protected mode که برا ۳۲ بیته
- virtual 8086 mode که همون real mode البته در حالت ۳۲ بیتی
- long mode که برا زمانیه که سی پی یو ۶۴ بیتی باشه و سیستم عامل مام برا سی پی یو های ۶۴ بیتی باشه
org 0x7C00
این میگه که بوت لودر از کدوم آدرس شروع به کار کنه
حتما باید ۰x7C00 باشه
times 510 – ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0
این میگه که تا بایت ۵۱۰ رو برابر با ۰ بزار
dw 0x55AA
که حتما باید باشه تا بایوس بفهمه که این بوت لودره
آهان راستی:
بایوس یا bios مخفف basic input output system
سیستم ورودی و خروجی پایه
خوب روش کامپایل:
این فایلو بریزید یه جایی و سیوش کنید!
بعدش برید تو محیط command prompt و اینو بنویسید:
nasm -f bin boot1.asm -o boot1.bin
که boot1.asm اسم اون فایلیه که سیو کردید و boot1.bin اسم فایلیه که کامپایل شده
میتونید boot1.bin رو به هر چیزی تغییر بدید تا با اون اسمی که میخواید کامپایل بشه!
حالا اگه سایز فایل رو چک کنید, باید ۵۱۲ بایت باشه
آهان: باید زمانی که nasm رو نصب میکنید بزنید که تو path ست بشه وگرنه رو آیکون nasm رو دسکتاپ اینتر بزنید و دستور رو بنویسید.
اینم از آموزش دوم!
سوال بود من در خدمتم, همینطور سرچ هم هست.
سلام امیر جان.
ببخشید این دوتا لینکی که گذاشتی کار نمیکنن
دستت درد نکنه درستش کن
سعید جان!, لینکا درستن!
اینا صفحه ی اصلی سایت اون پروژه هاست!
خوب حالا چظور باید با این فایل بین یه دیسک بوتیبل بسازیم؟!چرا دیگه ادامه نمیدید؟!
سلام
برا ساخت دیسک بوتبل, اول سایز فایل رو چک کنید که باید ۵۱۲ بایت باشه
و بعدش با partcopy از ۰ تا ۲۰۰ بیاریدش رو دیسکی که میخواد بوت بشه
یکی دیگه از کارا استفاده از flashnull هست که فلش رو برا سیستم عامل بوتبل میکنه
(میتونید فایل کامپایل شده بوت لودر) رو بریزید اون رو
در مورد ادامه دادن آموزش باید بگم که نوشتن سیستم عامل کار خیلی سختیه!, و خوب بچه های این سایت از پسش بر نمیان, اگرچه این سایت زیاد با برنامه نویسی کاری نداره!, و در مورد هر چیزی هست!, من این چندتا آموزش رو گزاشتم
بازم اگه استقبال بود!, من ادامه میدم