PDA

View Full Version : مود 32 بیتی



mostafa8266
شنبه 21 دی 1387, 20:16 عصر
سلام
این سوال رو تو برنامه نویسی اسمبلی خانواده x86 (http://barnamenevis.org/forum/forumdisplay.php?f=47) پرسیدم ولی کسی جواب نداد امیدوارم اینجا جوابی براش پیدا کنم.
می خوام بدونم بعد از بالا اومدن سیستم چه وقفه ای رو باید اجرا کنم که سیستم از مود 16 بیتی به مود 32 بیتی بره؟

pswin.pooya
سه شنبه 24 دی 1387, 02:03 صبح
سلام
سوئیچ به مود 32 بیتی که اصطلاحا به اون pmode یا همون protected mode گفته میشه خیلی راحته و فقط کافیه از کد زیر استفاده کنی:

mov eax, cr0 ; set bit 0 in CR0-go to pmode
or eax, 1
mov cr0, eax

البته همه چی با تکه کد بالا تموم نمیشه. قبل از رفتن به مود 32 بیتی و بعد از رفتن به اون باید یکسری از مقدمات رو فراهم کنی تا بتونی از سیستم استفاده کنی. از جمله اینها غیر فعال کردن وقفه ها هستش و بعد از رفتن هم باید مواردی مثل GDT و بردار وقفه رو بسازی و بعد از اون pit و pic رو برنامه ریزی کنی که خیلی سخته. و تازه بعد از اون میتونی وقفه ها رو فعال کنی. البته دیگه وقفه ای نداری و باید تمام وقفه هایی رو که لازم داری از اول بنویسی.

fazlnet
سه شنبه 24 دی 1387, 11:44 صبح
ps.win جان همه چي كامل بود و فقط يه چيز جا انداختي و اون غير پوششي كردن وقفه هاي سخت افزاريه.
موفق باشي