با سلام،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط salpc برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
برنامه نویسی هر بایوس به ساختار اون مادربورد وابسته است. در نتیجه ما نمی تونیم با یک روش بایوس هر مادربوردی رو به شکل دلخواه برنامه ریزی کنیم. ولی اگر تمایل دارید با ساختار برنامه ی بایوس آشنا بشید، پیوند زیر رو مطالعه بفرمایید:
http://www.jefro.net/astrobios-8-19-03.pdf
البته پروژه ای به نام coreboot هم وجود داره که با مهندسی معکوس به بایوس چندین مدل از مادربورد ها دست پیدا کرده که بررسی اون خالی از لطف نیست. زبان متداول برای نوشتن بایوس ها سی هستش. البته بعضی از قسمت های اون نظیر فرخوانی Boot Loader شاید با اسمبلی نوشته بشه.
اون موردی که شما در مورد Keyboard یا توابع DOS می فرمایید غالبا از طریق وقفه های بایوس صورت می گیره. شما می تونید از طریق یک کد اسمبلی به واسطه ی پردازنده یک وقفه رو صدا بزنید و در رجیستر پردازنده منتظر جواب اون بمونید (در C++ هم این کار توسط کلمه ی کلیدی asm امکان پذیره). برای اطلاعات بیش تر:
BIOS and DOS Interrupts
https://www.equestionanswers.com/c/c...interrupts.php
دسترسی به تنظیمات بایوس پیچیده است. پردازنده از طریق درگاه های IO خودش مانند 70H با حافظه ی بایوس می تونه در ارتباط باشه. نکته اینجاست که در ویندوز شما از سطح یک Application نمی تونید به این درگاه ها دسترسی داشته باشید. در نتیجه باید یک درایور در سطح هسته طراحی کنید که این کار رو براتون انجام بده (البته لینوکس در این مورد آزادی عمل بیش تری به شما میده). پس از دسترسی به حافظه شما باید آدرس های حافظه رو تفسیر کنید تا درک کنید که هر آدرس حافظه شامل چه تنظیماتی از مادربورد هستش. متاسفانه این آدرس دهی ها استاندارد جامعی نداره و حتی این استاندارد بر روی دو مدل مادربورد از شرکت یکسان ممکنه متفاوت باشه. مضافا این که تقریبا هیچ شرکتی اطلاعات مربوط به آدرس دهی های خودش رو منتشر نمی کنه.
Bookmarks