الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

interrupt

مغلق
بدأه عبدالحليم في 27 ديسمبر 2004 · 15 رد · 1,270 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أخواني الكرام .... ممكن مساعده ... ولكم الأجر أنشألله ... هذه أول مشاركه لي وأتمنى أن أجد ردا ... وتجاوبا ... أو ... أخذ عفشي وأغادر المنتدى

أنا .... لدي مشروع بلغة السي بلس بلس محتاج به الى المقاطعات ... والمقاطعات موضوع صعب ... ماأعرفه عنها

الداله int 86

int 86x

union regs

الحاجه الى بارمترات

... هذه المصطلحات ... لكني لم أفهم علاقتها ببعضها ... أريد أن أفهم مثال واحد .. مثلا .. أريد معرفة أن كان هناك floppy disk

وأريد أستخدام المقاطعات بذلك

.... أتمنى أن تساعدوني ... وأذا كان هناك خطاء فادح في ماكتبته ... أو مثالي سئ ... فالتمسوا لي العذر ... أني مازلت أتعلم

ولكم كل الشكر

#2

مرحباً اخي عبدالحليم .. اذا كنت جيداً في الاسمبلي فمن الافضل لك التعامل مع المقاطعات من خلالها .. و من الممكن ايضاً ان تضمن كود اسمبلي داخل كود السي و بالتالي تستطيع عمل الاوامر التي تريدها من خلال جمل بالاسمبلي و تكمل برنامجك كما تريد بلغة السي كما يلي :

viod main()
{
cout<<"ASM Inside C";

asm_ mov ah,5
}

ارجوا ان يفيدك ذلك .. مالم فأتوقع ان يعطوك الاخوة هنا اجابات افضل ..

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 27 ديسمبر 2004 في 22:06

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#3

عجبتني اوي لهجة التهديد دي يا عبد بضم العين وفتح وفتح الباء وتسكين الدال!

متهيقللي الاسمبلي مهم عشان تفهم المقاطعات itrrupt

بس السي ++ مسهلالك الموضوع من خلال dos.hخش علي المترجم بتاعك وافتح ال HELP وممكن تلاقي امثله

http://www.digitalmars.com/rtl/dos.html

ممكن تعمل search علي dos.h في googel

سلام

لا اله الا الله
#4
medo_elkorsan كتب:
عجبتني اوي لهجة التهديد دي يا عبد بضم العين وفتح وفتح الباء وتسكين الدال!

متهيقللي الاسمبلي مهم عشان تفهم المقاطعات itrrupt

بس السي ++ مسهلالك الموضوع من خلال dos.hخش علي المترجم بتاعك وافتح ال HELP وممكن تلاقي امثله

http://www.digitalmars.com/rtl/dos.html

ممكن تعمل search علي dos.h في googel

سلام

__024 __024 __024 __024

#5

ربنا ييخليك :wub:

لا اله الا الله
#6

بسم الله الرحمن الرحيم

الحمدلله أن في حد رد عليا ... أن كنت بدأت أعزل... ونقلت الثلاجه ... هارجعها خلاص

..... شكرا لكم على الرد

و

موضوع الأسمبلي غير مسموح لنا بالتعامل معه ( دماغ الدكتور المصلبه )

وكل من سئلته كان يقترح علي أستخدام الأسمبلي

لكن الشحططه وأستخدام السي والبحث وضرب الرأس على الحيطه كل ده أرحم بكثير من أقناع سيادته باستخدام الأسمبلي

و

أعرف ياأخي العزيز ... أنها في الدوز ... (أنا ميحه بس مش لدرجه دي)

و دخلت ال helpفتحت أمثله ... وقرأتها ونفذتها .... ومافهمتش حاجه

أتمنى حد يكون عنده خلفيه عن الموضوع ينول بيا ثواب ويفهمني ( من تهديد لأستجداء)

وتقبلوا شكري

#7

السلام عليكم

أخواني ممكن أي حد مش عارف يدخل يقول أنا مش عارف علشان نفسيتي بدأت تتدهور

وحاسس أني زودتها وأن ماحدش رد علشان حكاية العفش ( باهزر والله العظيم باهزر)

حد يرد عليا

الله يخليكم

#8

السلام عليكم,

كما قيل لك من قبل استعمال المقاطعات في الأسمبلي شيئ طبيعي لأن البرمجة في الدوس مبنية على هذا النظام. وهناك بعض كمبايلارات للغة س أو س++ تتعامل مع المقاطعات لتسهل البرمجة ولكنها في الخفاء تستعمل المقاطعات وهذا شيئ طبيعي أيضا لأنها لا مفر لها من ذلك. مثلا في بعض الكمبايلرات حين يريدون استدعاء مقاطعة رقم X يكون الإستدعاء على شكل دالة تحمل اسم intX أو على هذا القبيل بينما الرجسترات تكون على شكل Structure أو Union أو أشياء مثل هذا. وهنا نرجع دائما للأسمبلر إذا أردنا معرفة هذا وهنا أفتح بابا قصيرا.

كل المقاطعات تعتمد على تارجسترات في التعامل . فكمثال أي دالة تحتاج إلى بارامترات نعطيها وهي تعطينا من بعد نتيجة. في حالة الدوال نعطي المتغيرات على شكل متغيرات عادية يعني إما int أو double أو غيرها. بينما فيما يخص المقاطعات كل المعطيات يجب أن تكون في رجسترات وأيضا ما تعطيه لنا المقاطعة من نتيجة يكون في رجسترات. وهذه المعطيات والرجسترات تختلف طبعا من مقاطعة إلى أخرى حسب ما تقوم به المقاطعة. وهنا يجب أن نعرف كل مقاطعة ما تطلبه من معلومات والرجسترات التي تطلب فيها المعطيات وكذلك كيف وأين ستكون النتيجة. ولهذا الغرض هناك ملفات عديدة تتكلم عن خصائص المعطيات يمكن العثور عليها في النت.فإذا عرفنا كل هذا فاستعمال المقاطعات في لغة مثل س يصبح أمر بديهي.

فمثلا لو نريد أن نطبع على الشاشة كلمة ما فهنا نعرف أن المقاطعة لهذا هي المقاطعة رقم 21 هيكس مع استعمال الرجستر ah بقيمة 9 والمعطيات اللازمة لها هي عنوان الكلمة التي نريد كتابتها ويجب أن يكون هذا العنوان في DS:DX وفي الأسمبلر سيكون كما يلي :

mov ah,9

mov dx,Offset of what we want to write

int 21h

وفي لغة س بعض الكمبايلرات تقوم على هذا الشكل بطريقة تكون على النحو التالي

يكون لدينا تعريف مثلا لستراكت أو شيئ يشبهها نضع فيه جميع الرجسترات أو الرجسترات التي تهمنا مثلا هنا سنقول

struct regs

{

WORD ax

WORD dx

}

والكمثال السابق سنعطي المتغيرات للرجسترات مثلا :

regs.ax=9

regs.dx=offsetof wahet we want

int21

وهنا int21 تكون الدالة التي ستستدعي المقاطعة .

وإذا كانت المقاطعة تعطينا نتيجة في رجستر معين مثلا ax قما علينا سوى قراءة النتيجة من بعد على النحو التالي :

Result=regs.ax

هذه هي الطريقة التي يتعامل معها معظم الكمبايلرات وهنا يبقى فقط الطريقة الصحيحة لكتابة الأوامر حسب الكمبايلر اللي عندك أما الطريقة فتبقى دائما كما هي.

إلى اللقاء.

#9

شكرا جزيلا لك أخي الكريم

#10

السلام عليكم ورحمة الله وبركاته

شكرا جزيلاً أخ عبد الحليم على طرحك لهذا السؤال فانا كذلك كان لدي نفس هذا التساؤل وهو كيفية استخدام المقاطعات في لغة سي++

ولكن على ما يبدوا من شرح الاخ CHIK انه من الافضل دمج الاسيمبلي في البرنامج

فأرجو منك اخ CHIK ان توضح اكثر بمثال أخر وليكن مثلاً برنامج يوضح مساحة القرص الصلب او مساحة الرام حتى يتم الفهم بشكل أعمق وأرجو ان لا اكون قد اثقلت ..

أرجو فعلا الإهتمام بهذا الموضوع فهو حقاً مهم جداًجداً

جزاكم الله خيراً

" الدنيا سجن المؤمن وجنة الكافر ... والأخرة جنة المؤمن وسجن الكافر "

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

" اعمل لدنياك كأنك تعيش أبدا... واعمل لآخرتك كأنك تموت غداً "

#12

السلام عليكم

أخواني .. لاأعرف هل الموضوع صعب أم المشكله تكمن بقدراتي العقليه .. لكني وللأسف لم أفهم ... وشجعني كثير رد الأخت ورده شرقيه وتوقعت التجاوب والردود وأن مشكلتي التي تشابه مشكلتها سوف تنحل ... أنا أنتظركم ..

وليس بوسعي طرح أسئله

أتقبل اي مشاركه أو رد ومتفائل بذلك

تحياتي لكم

#13

اليك اخي الكريم هذه الوصلة التي ارجوا ان تفيدك :

^Interrupt Programming in C/C++^

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#14

شكرا جزيلا لك أختي

#15

السلام عليكم,

انظر الرابط التالي في هذا المنتدى فهو يتكلم عن نفس السؤال وفيه بعض الملفات التي قد تهم لهذا الموضوع :

/index.php?showtopic=54029

/index.php?showtopic=54030

إلى اللقاء.

#16

شكرا ........ أخي العزيز .... شكرا

ماتكفي أعرف .... بس مشكور من أعماقي

هذا الموضوع مغلق.

مواضيع مشابهة