زمانی که سیستم را خاموش می کنید و یا به هر دلیلی میخواهید از ویندوز خارج شویدحتما از شما درباره ذخیره برنامه ها سؤال می شود.نکته جالب توجه در ویندوز XP خروج از آن بدون ذخیره اطلاعات است.در این صورت شما می توانید برنامه ها را
در هر حالتی که هستند رها کرده و از ویندوز خارج شوید.مجدد که وارد محیط ویندوز می شوید می بینید که هیچ چیز دست نخورده و برنامه ها به همان شکل باقی مانده اند حالا شما می توانید به کارتان ادامه دهید!!! (حتی پنجره ها باز مانده اند)
این حالت را اصطلاحا HIBERNATE میگویند.برای فعال کردن آن از منوی استارت به کنترل پنل رفته و Power Options را باز کنید سپس در سربرگ Hibernate گزینه Enable Hibernation را فعال کنید و تنظیمات را تایید کنید.حال منوی استارت را باز کرده
و turn of computer را انتخاب کنید. در صفحه باز شده دکمه shift را بزنید.میبینید که گزینه standby به hibernate تغییر پیدا
می کند.برای بردن کامپیوتر به این حالت دکمه shift را نگه داشته و روی hibernate کلیک کنید.
موفق باشید !
اول باید بدانیم وقفه چیست:
وقفه سیگنالی است که از طرف دستگاهها و یا برنامه ها است که عمل خاصی را از سیستم درخواست می کند که این سیگنال نیاز به پیگیری فوری دارد این سیگنالها به صورت توابعی در اختیار برنامه نویسان قرار داده شده است. وقتی وقفه ای به کار می افتد سیستم اجرای برنامه در حال اجرا را به تعویق انداخته و به وقفه پاسخ می دهد و بعد از آن ادامه برنامه را اجرا
می کند.
وقفه ها به دو رده کلی تقسیم می شوند:
1) وقفه های نرم افزاری: این وقفه ها توسط نرم افزار تولید می شوند وکارهای نرم افزاری انجام می دهند. مثل وقفه های DOS
2) وقفه های سخت افزاری: این وقفه ها توسط سخت افزار تولید می شوند مثل وقفه صفحه کلید
تعداد 256 وقفه سخت افزاری و هم نرم افزاری در سیستم وجود دارد که در جدول زیر آمده اند البته هر کدام از این وقفه ها ممکن است دارای توابعی باشند که در زیر فقط اصل کار این وقفه ها ذکر شده است.
شماره وقفه |
آدرس وقفه |
کار وقفه |
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29-2E 2F 30-32 33 34-40 41 42-45 46 47-49 4A 4B-5B 5C 5D-66 67 68-6F 70 71 72 73 74 75 76 77 78-7F 80-F0 F1-FF |
000-003 004-007 008-00B 00C-00F 010-013 014-017 018-01B 01D-01F 020-023 024-027 028-02B 02C-02F 030-033 034-037 038-03B 03C-03F 040-043 044-047 048-04B 04C-04F 050-053 054-057 058-05B 05C-05F 060-063 064-067 068-06B 06C-06F 070-073 074-077 078-07B 07C-07F 080-083 084-087 088-08B 08C-08F 090-093 094-097 098-09B 09C-09F 0A0-0A3 0A4-0BB 0BC-0BF 0C0-0CB 0CC-0CF 0D0-0FF 104-107 108-117 118-11B 11C-127 128-12B 12C-16F 170-173 174-19B 19C-19F 1A0-1BF 1C0-1C3 1C4-1C7 1C8-1CB 1CC-1CF 100-103 104-107 108-10B 10C-10F 1E0-1FF 200-3C3 3C4-3CF |
پردازنده: تقسیم بر صفر پردازنده: تک گام پردازنده: NMI وقفه بدون ماسک (خطا برای RAM ) پردازنده: نقطه توقف برنامه دردسترس نیست پردازنده: سرریزی عدد Hardcopy دستورالعمل ناشناخته (فقط برای80286 بکار می رود) رزرو شده IRQ0: تایمر ( هر ثانیه 18.2 بار) IRQ1: صفحه کلید IRQ2: دومین تراشه 8259 ( فقط برای کامپیوترهای AT بکار می رود ) IRQ3: پورت سریال شماره 2 IRQ4: پورت سریال شماره 1 IRQ5: هارد درایو IRQ6: دیسکت IRQ7: چاپگر BIOS: تابعهای صفحه نمایش BIOS: معلوم کردن ترکیب سیستم BIOS: معلوم کردن اندازه حافظه RAM BIOS: توابع دیسکت وهارد دیسک BIOS: دسترسی به پورت سریال BIOS: نوار مغناطیسی وتوابع پیشرفته BIOS: پرسش از صفحه کلید ( پویش صفحه کلید ) BIOS: دسترسی به پورت موازی چاپگر صدا زدن ROM BASIC BIOS: BOOT کردن سیستم ( Ctrl+Alt+Delete ) BIOS: فرمان Time یا Date کلید Break ( نه کلید Ctrl-C ) فشرده شده است بعد از هر بار فراخوانی INT 8 فراخوانی می شود آدرس جدول پارامتر ویدئویی آدرس جدول پارامتر دیسکت آدرس نمونه کارکتر بیتی DOS: خروج از برنامه DOS: صدا کردن توابع DOS آدرس خروج ازروتین برنامه در DOS آدرس روتین Ctrl-Break در DOS آدرس خطا در DOS DOS: خواندن دیسکت و هارد دیسک DOS: نوشتن دیسکت و هارد دیسک DOS: خروج از برنامه و مقیم شدن در حافظه DOS: DOS اشغال نشده است DOS: رزرو شده DOS: Multiplexer ( تقسیم کننده ) DOS: رزرو شده توابع گرداننده ماوس DOS: رزرو شده آدرس جدول 1 هارد دیسک رزرو شده آدرس جدول 2 هارد دیسک برای استفاده برنامه ها دسترسی به زنگ ساعت ( فقط در کامپیوترهای AT) خالی: برای استفاده برنامه ها توابع NETBIOS خالی: برای استفاده برنامه ها توابع مدیریت حافظه EMS خالی: برای استفاده برنامه ها IRQ08: ساعت بلا درنگ ( فقط در کامپیوترهای AT ) IRQ09: (فقط در کامپیوترهای AT ) IRQ10: (فقط در کامپیوترهای AT ) IRQ11: (فقط در کامپیوترهای AT ) IRQ12: (فقط در کامپیوترهای AT ) IRQ13: NMI در 80387 (فقط در کامپیوترهای AT ) IRQ14: هاردیسک (فقط در کامپیوترهای AT ) IRQ15: (فقط در کامپیوترهای AT ) رزرو شده برای استفاده مفسر BASIC رزرو شده |
برای استفاده از این وقفه ها باید بدانید که بعضی از این وقفه ها برای کار نیاز به مقدار دهی ثباتها دارند.
حال طریقه استفاده از این توابع را به هر سه زبان سی و پاسکال و اسمبلی برای شما بیان می کنم
در زبان پاسکال:
یک Type به عنوان Registers در یونیت DOS برای کار با ثباتهای پردازنده قرار دارد که همه ثباتها به جز ثباتهای CS,IP در آن قرار دارند.
یک زیر روال به نام Intr وجود دارد که وقفه را می فرستد و شکل کلی آن به صورت زیر است
Intr(شماره وقفه,Registers متغیری از نوع);
درزبان پاسکال برای اعداد در مبنای 16 از علامت $ استفاده می کنیم.
من می خواهم برنامه ای به زبان پاسکال با استفاده از وقفه بنویسم که اندازه مکان نما را بزرگ کند.
Uses
Dos,Crt;
Var
Regs:Registers;
Begin
Regs.AH:=1;
Regs.CH:=0;
Regs.CL:=13;
Intr($10,Regs);
ReadKey;
End.
در زبان سی:
یک union به عنوان REGS در dos.h است برا استفاده ازثباتهای 16 بیتی از رکورد x وبرای استفاده از ثباتهای 8 بیتی از رکورد h استفاده می کنیم وثباتهای سگمنت هم در union دیگری به نام SREGSقرار دارند
در زبان سی برای اعداد در مبنای 16 ازعلامت 0x در ابتدای عدد استفاده می کنیم
یک زیر روال به نام int86 وجود دارد که وقفه را می فرستد و شکل کلی آن به صورت زیر است
Int86(شماره وقفه,پارامترهای ورودی,پارامترهای خروجی);
برنامه بالا را به زبان سی می نویسم
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
main()
{
union REGS r;
r.h.ah=1;
r.h.ch=0;
r.h.cl=13;
int86(0x10,&r,&r);
getch();
}
در زبان اسمبلی احتیاج به متغیری برای کارکردن با ثباتها نداریم چون این زبان نزدیک به ماشین است ثباتها به صورت تعریف شده در این زبان وجود دارند
برای اجرای وقفه توسط زبان اسمبلی از دستور INT استفاده می شود.
من همان مثال را در زبان اسمبلی پیاده کرده ام.
.Model Small
ORG 100H
CodeSg Segment Para Code ‘Code’
Main Proce Far
Assume CS :CodeSg,DS :CodeSg,SS :CodeSg,ES :CodeSg
MOV AH,1
MOV CH,0
MOV CL,13
INT 10H
MOV AH,4CH
INT 21H
RETF
Main EndP
CodeSg EndS
End Main
موفق باشید. نظر یادتون نره !