View Full Version : سوال: وقفه در سیستم عامل
نغمه ذ
جمعه 08 بهمن 1389, 14:51 عصر
من یه سوال راجع به وقفه ها دارم ...
دنبال اطلاعاتی راجع به تقسیم بندی وقفه ها و رویکرد های آنها در دو سیستم عامل مختلف هستم ...
اگر می شه کمکم کنید ...
ممنون.
Dead Space
جمعه 08 بهمن 1389, 16:39 عصر
منظورت intrupt ها هستش ؟
من تا حدی باهاشون در ویندوز آشنا هستم تعریفشون رو میخوای بدونی یا کاربرد یا اصلا هر دو؟
نغمه ذ
جمعه 08 بهمن 1389, 17:06 عصر
بله منظورم interrupt هست ...
تعریفشون رو می دونم ... اطلاعات بیشتری می خوام ...
ممنون می شم راجع بهشون توضیح بدید
Dead Space
جمعه 08 بهمن 1389, 19:29 عصر
تا حدی که می تونم و بلدم بهت توضیح می دم با توجه به اینکه خودتم شناخت داری ازش
اول اینکه یک کتاب انگلیسی هستش اگر اشتباه نکنم اسمش PC Entered هستش که همه ی وقفه ها رو توضیح داده
دوم اینکه تعداد Intrupt ها از 0 تا 255 هستش
من دو تا Intrupt رو میشناسم که کاربردش خیلی زیاده
INT 10H
INT 21H
;------
شماره وقفه 10 و سرویس 06 وظیفه داره صفحه نمایش رو پاک کنه یعنی بااستفاده از این شماره سرویس شما میتونی قسمتی از صفحه نمایش یا کل صفحه نمایش رو به رنگی که دوست داری در بیاری
شکل کلیش هم به این صورت هست که
در ثبات ah شما شماره سرویس رو میریزی که 06 هستش
در ثبات al تعداد خطی که میخوای پاک بشه رو قرار میدی که از 0 تا 25 هستش
در ثبات cl شماره ستون بالای سمت چپ
ذر ثبات ch شماره سط بالای سمت چپ
در DH شماره سطر پایین سمت راست
در dl شماره ستون پایین سمت راست
در BH رنگ قلم و بک گراند صفحه که میخوایی تغییر کنه رو قرار میدی که H هستش و به صورت IRGB بهش 0 یا 1 میدی تا عددش در بیاد
یک مثال این مثال کل صفحه نمایش رو پاک می کنه
;-------
mov ah,06
mov al,25
mov cl,0
mov ch,0
mov dh,24
mov dl,79
mov bh,41H
int 10H
;-----------
وقفه بعدی وقفه 10 با شماره سرویس 02 هستش عملکردش انتقال مکان نما در صفحه نمایش هستش
در ah مثل همیشه شماره سرویس که 02 هستش
در DH شماره سطر
در DL شماره ستون
در BH شماره صفحه ای که میخوایی پاک بشه که current رو باید 0 بدی
مثال:
mov ah,20
mov dh,12
mov dl,40
mov bh,0
int 10H
;--------
وقفه بعدی 21H هستش با شماره سرویس 4C وظیفش خاتمه برنامه هستش
در ah مقدار 4CH قرار می گیره
در al کد خطا که اگر خطا در کار نباشه 0 قرار میگیره
معمولا از این سرویس در انتهای برنامه استفاده می کنن
مثال:
mov ah,4CH
mov al,0
int 21H
;--------
وقفه 21 سرویس 01 و یا 08
وظیفش خواندن یک کاراکتر هستش که در ثبات al کد اسکیش رو نگه می داره
مثال:
mov ah,01
int 21H
در اینجا برنامه صبر می کنه اولین char که زده بشه میگیره میریزه توی al
در 08 نمیدونم با C++ کار کردی یا نه ولی اونجا چیزی داشتیم به اسم getch که کاراکتر میگرفت و نمایشش نمیداد بر خلاف cin اینجا 08 هم به این صورت هست کاراکتر رو میگیره ولی در صفحه نمایش نشونش نمیده
;-------
سرویس 02 از وقفه 21 وظیفش چاپ کاراکتر هستش
مقدار موجود در dl رو چاپ می کنه
مثال
mov ah,02
mov dl,'A'
int 21H
;------
سرویس 0A از وقفه 21 وظیفش خواندن یک رشته هستش
مثال
mov ah,0AH
lea dx,strlist1
int 21H
توی این مثال رشته گرفته شده در Buff مربوط به strlist ریخته میشه مثلا ما ali زدیم به این صورت میشه
Max 5
Len 3
Buff ali$$
;----------
سرویس 09 از وقفه 21 وظیفش چاپ رشته هستش
در DH ادرس رشته چاپی رو میگیره چاپ می کنه مثلا میخواییم ali که در مثال قبل از کاربر گرفتیم رو چاپ کنیم به این صورت عمل می کنیم
mov ah,09H
lea dh,09H
int21H
در درس اسمبلی که ما داشتیم تا این حد به ما یاد دادن و بیشتر بحث ما روی Flag ها و Jump ها بودش
امیدوارم اینا به دردت بخوره
موفق باشید
نغمه ذ
جمعه 08 بهمن 1389, 19:41 عصر
ممنون
اینا وقفه ها توی اسمبلی بودش ...
من وقفه در سیستم عامل ویندوز رو می خوام ...
راستش این سوال درس سیستم عاملمه ... گفته راجع به دسته بندی وقفه ها در دو سیستم عامل مختلف اطلاعات جمع کنیم ....
نغمه ذ
جمعه 08 بهمن 1389, 20:04 عصر
در سیستم عامل لینوکس اطلاعاتی در مورد ریز اتفاقاتی که در مورد وقفه ها می افتد پیدا کرده ام ...
اما در مورد ویندوز هیچ اطلاعاتی در دسترس نیست ...
لینک مربوط به لینوکس http://tldp.org/LDP/tlk/dd/interrupts.html#interrupt-data-structures می باشد ...
اطلاعات وقفه ها که در زبان اسمبلی اشاره کردید برای برنامه نویسی است اما من برای برنامه نویسی نمی خواهم ، برای طراحی سیستم عامل به دنبال اطلاعات می گردم ...
با تشکر.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.