آموزش نوشتن سیستم عامل, قسمت دوم


- 924 بازدید

سلام!
حال خوشحالتون چه طوره؟
خوبید؟
آره من با آموزش دوم سیستم عامل نویسی اومدم!
خوب قبل از هر چیز, باید اینا رو کامپیوتراتون نصب باشه
البته برا این آموزش
بعدا بیشتر میشن
خوب!:
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 رو دسکتاپ اینتر بزنید و دستور رو بنویسید.
اینم از آموزش دوم!
سوال بود من در خدمتم, همینطور سرچ هم هست.

اولین کسی باشید که این پست رو میپسنده!

Print Friendly, PDF & Email



  • درباره امیر رضا رمضانی

    من یه برنامه نویس کم بینام بیشتر تو بحث سیستم عامل و هوش مصنوعی و بازی و شبکه برنامه نویسی میکنم. همینطور تو موسیقی با کامپیوتر فعالیت میکنم. پیانو رو هم بلدم به لطف خدا به فیلمهای پلیسی و جنایی و بکش بکش علاقه زیادی دارم مخصوصا زمانی که خون ریخته بشه و کشتار شدید بشه. بیشتر سعی میکنم به بقیه خدمت کنم مخصوصا نابیناها از دست کسی ناراحت نمیشم ولی خیلی سریع از کوره در میرم C++ رو تو 12 سالگی و اسمبلی رو تو 16 سالگی یاد گرفتم رو سیستم عامل AmirOS که جنبه یه آموزشی برایه خودم داشت و گیم انجین advanced audio game engineکار کردم audio game kit نسخه اولش به صورت یه کتاب خونه C++ تحت لیسانس bsl-1.0 منتشر شده. و اگه زنده بودم و حوصله داشتم advanced audio game engine رو هم کامل میکنم و منتشرش میکنم از تحصیلاتم بگم که دورانه ابتدایی و راهنمایی و اول دبیرستان رو تو مدرسه یه خزائلی گزروندم و دوم دبیرستان تا پیشدانشگاهی رو هم رفتم تو عادی که اگه به تجربه یه من میخواید بدونید عادی خیلی بهتر از استثنایی برا من بود تو دبیرستان دیپلوممو علوم انسانی گرفتم و الآنم دارم تو دانشگاهه آزاده تهران جنوب مترجمی زبانو ادامه میدم در مورده علاقم به زبان تنها نکته ای که میتونم بگم اینه که خیلی زیاد از زبان خوشم میاد و همینجوری دوست دارم ادامه بدمش راستی: مدیر سایتم و میتونید با شماره 09194098098 و آیدی اسکایپ amir.ramezani1370 و ایمیله amir.ramezani1370@gmail.com با من در تماس باشید و نظرات, پیشنهادات, انتقادات و هر چی دل تنگتون میخوادش, در مورد هر چیز بگین.
    این نوشته در آموزش, نرم افزار ارسال و , , , , , , , , برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

    4 پاسخ به آموزش نوشتن سیستم عامل, قسمت دوم

    1. سعید پناهی سعید پناهی می‌گوید:

      سلام امیر جان.
      ببخشید این دوتا لینکی که گذاشتی کار نمیکنن
      دستت درد نکنه درستش کن

    2. سینا جهرمی می‌گوید:

      خوب حالا چظور باید با این فایل بین یه دیسک بوتیبل بسازیم؟!چرا دیگه ادامه نمیدید؟!

      • امیر رضا رمضانی می‌گوید:

        سلام
        برا ساخت دیسک بوتبل, اول سایز فایل رو چک کنید که باید ۵۱۲ بایت باشه
        و بعدش با partcopy از ۰ تا ۲۰۰ بیاریدش رو دیسکی که میخواد بوت بشه
        یکی دیگه از کارا استفاده از flashnull هست که فلش رو برا سیستم عامل بوتبل میکنه
        (میتونید فایل کامپایل شده بوت لودر) رو بریزید اون رو
        در مورد ادامه دادن آموزش باید بگم که نوشتن سیستم عامل کار خیلی سختیه!, و خوب بچه های این سایت از پسش بر نمیان, اگرچه این سایت زیاد با برنامه نویسی کاری نداره!, و در مورد هر چیزی هست!, من این چندتا آموزش رو گزاشتم
        بازم اگه استقبال بود!, من ادامه میدم

    پاسخ دهید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    Question   Razz  Sad   Evil  Exclaim  Smile  Redface  Biggrin  Surprised  Eek   Confused   Cool  LOL   Mad   Twisted  Rolleyes   Wink  Idea  Arrow  Neutral  Cry   Mr. Green