ایجاد عدد تصادفی با زبان برنامه نویسی C

در این مقاله برای شما نمونه کد ساده برای ایجاد عدد تصادفی قرار می دهم امیدوارم مفید واقع شود.

ادامه مطلب…







چگونگی راه اندازی ماوس در زبان برنامه نویسی C

برای استفاده از مویس در Dos می بایست از وقفه ۳۳ کمک گرفت . بنابراین در این مقاله قبل از توضیح بکارگیری ماوس در C ابتدا به تشریح بکارگیری وقفه ها در C می پردازیم.
کسانی که با زبان برنامه نویسی اسمبلی کار کرده اند ، با کار وقفه ها به خوبی آشنایی دارند . در واقع در زبان اسمبلی تمامی کارها با فراخوانی وقفه ها انجام میشود چرا که این زبان یک زبان سطح پایین است . اما در زبانهای سطح بالا مثل C وقفه ها از چشم کاربر دور شده اند تا زبان برنامه نویسی به زبان محاوره ای انسان نزدیکتر شود . با این حال فراخوانی وقفه ها در C برای برنامه نویس امکان پذیر است .
در زبان C ایتدا باید یک متغیر از نوع رجیستر تعریف شود تا بتوان به کمک آن به رجیستر ها دستیابی داشت :
REGS r;
در تعریف بالا متغیر r از نوع Register تعریف شده که این نوع در سرفایل Dos.h قرار دارد.
حال برای دستیابی به یک رجیستر مانند AX و یا اجزای آن یعنی AH , AL یک یونیون در Dos.h تعریف شده است که ساختمان داخلی x در آن برای دستیابی به رجیستر ۲ بایتی (رجیستر کامل ) مانند AX و ساختمان داخلی h برای دستیابی به اجزای رجیستر ۲ بایتی یعنی AH , AL که یک بایتی هستند ، می باشند:

پس اگر بخواهیم به رجیستر AX و مانند آن دستیابی پیدا کنیم می نویسیم :
r.x.ax
و برای اجزای آن می نویسیم :

پس از مقدار دهی رجیستر ها و مشخص کردن شماره تابع یا سرویس ، نوبت به فراخوانی وقفه یا اینتراپت می رسد که با فرمان زیر انجام می شود :
int86(آدرس متغیر رجیستر خروجی,آدرس متغیر رجیستر ورودی,شماره وقفه در مبنای ۱۶);
اعداد مبنای ۱۶ در C با ۰x شروع می شوند . مثلا اگر بخواهیم تابع شماره ۱ از وقفه ۳۳ را فراخوانی کنیم باید شماره تابع را در AH قرار داده و سپس وقفه را فراخوانی کنیم :

که البته در مثال بالا از آنجایی که AH جزوی از AX می باشد و در سمت راست مقدار دهی می شود از AX استفاده شده است . در واقع AX=01 یعنی AL=0 و AH=1 .
متغیر in شامل ورودی های وقفه است و چنانچه وقفه خروجی هم داشته باشد خروجی های آن در out قرار می گیرد.
حال به استفاده از ماوس می پردازیم .
۱- راه اندازی ماوس : تابع ۰ از وقفه ۳۳ : اگر پس از اجرای وقفه مقدار AX برابر ۰ باشد یعنی ماوس راه اندازی نشده است .

لازم به ذکر است که قبل از فراخوانی این تابع باید درایور ماوس در داس را اجرا کنید مثلا : GMouse.com
۲ – نمایش کرسر ماوس : تابع ۱ از وقفه ۳۳ : پس از راه اندازی مویس اجرا می شود .

۳- مخفی کردن کرسر ماوس : تابع ۲ از وقفه ۳۳ :

۴-بدست آوردن مختصات مکان نمای مویس : تابع ۳ از وقفه ۳۳ : پس از اجرای وقفه شماره ستون در CX و سطر در DX قرار می گیرد .

۵- انتقال کرسر : تابع ۴ از وقفه ۳۳ : قبل از فراخوانی می بایست شماره ستون مورد نظر در CX و شماره سطر در DX قرار گیرد .

۶- تست کلیک شدن ماوس : تابع ۵ از وقفه ۳۳ : شماره کلید ماوس باید در BX قرار گیرد ( ۰ برای چپ – ۱ برای راست و ۲ برای وسط ) . اگر کلیک شده باشد مقدار ۱ در BX و گرنه ۰ در آن قرار می گیرد.

توابع گفته شده سرویسهای مهم بکارگیری ماوس بود . سایر توابع را می توانید در جدول وقفه های داس در ستون وقفه ۳۳ بیابید .