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

مشكلة فى انظمة المسجلات والمقاطعات ؟

مغلق
بدأه hamada hassan ali في 2 ديسمبر 2005 · 14 رد · 1,207 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ياشباب

انا مند يومين قراءت موضوعات كتيرة عن الاسمبلى والموضوعات المتقدمة بالمنتدى

يقال ان المقاطعات INT لا تستخدم مع اسمبلى 32 بت

استدعى الخدمات ازى فى الاسمبلى 32 بت بدون التعامل مع المقاطعات ممكن حد يفهمنى عشان انا قربت اتجنن

ارجوكم عاوز اعرف السر فى برمجة 32 بت

مثال : مجرد وجهة نظر :

مثال منقول من احدى موضوعات JAAS

mov al,18h
out 70h,al
in al,71h
mov ah,al
mov al,17h
out 70h,al
in al,71h

هدا الكود تحليل لطريقة عمل المقاطعة 12

يعنى عندما نكتب المقاطعة 12 يتم تنفيد هده السطور

طيب هل لان المسجلات المستخدمة فى اجراءت المقاطعة هى مسجلات 16 بت

=========================================================================

طيب هل لو استبدالت المسجلات 16 بت بمسجلات 32 بت ممكن المقاطعة تشتغل فى بيئة 32 بت

=========================================================================

وياريت ممكن اعرف عناوين منافد الجهاز الكيبورد والشاشة والماوس وكل المنافد

ارجوكم حد يقولى ايه السر

=========================================================================

2- وهل لو اكتفيت بتعليمات المعالج فقط 32 بت P4 يمكننى الاستغناء عن المقاطعات هل هدا ما تقصده

وياريت لو اعرف عناوين المنافد كلها ازى ( الكيبورد و الماوس والشاشة و المنفد USB2.0 و منفد COM ومنافد الجهاز )

=========================================================================

انا نفسى افهم كل شىء فى اسمبلى 32 بت وانسى كل ما تعلمته فى 16 بت لانى اتخنقت

العالم كله وصل 64 بت واحنا لسه فى 16 بت

لو سمحتم ممكن اعرف سر المقاطعات

3- لو سمحتم ممكن اعرف اسم اقوى كتاب اسمبلى 32 بت يبداء معى من الصفر الى النهاية

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 2 ديسمبر 2005 في 14:36

_____________________________

C Language && Windwos_API

_____________________________

#2

ادا تخيلنا انه المقاطعة تصمم من خلال تعليمات المعالج فقط

فهدا يعنى انه يمكن الاستغناء عنها

ممكن صح

_____________________________

C Language && Windwos_API

_____________________________

#3

امور كثيرة مختلطة عندك يا حمادة انصحك بقرائة كتاب يشرح المعالجات, ما دخل المقاطعات بالمعالج؟؟ المقاطعات هى جزء من الBIOS وهناك مقاطعات خاصة بالنظام مثل int 21 الخاصة بنظام الدوس..

النظام المحمي يمنعك من الوصول للهاردوير, لذلك عليك ان تستخدم الـAPI عوضاً عن المقاطعات, وفى هذه الحالة جميع المنافذ ينظر إلأيها النظام على اساس انها ملفات تفتح بنفس الطريقة التى يفتح بها الملف:

والسلام عليكم

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#4

مشكورين

انا كل مرة بتعلم منكم اشياء مفيدة جدا شكرا

اقتباس
النظام المحمي يمنعك من الوصول للهاردوير, لذلك عليك ان تستخدم الـAPI عوضاً عن المقاطعات, وفى هذه الحالة جميع المنافذ ينظر إلأيها النظام على اساس انها ملفات تفتح بنفس الطريقة التى يفتح بها الملف:

انا حتى الان لم انكر اهمية دوال API

ولكن انا اريد معرفة هل كل المقاطعات يتم برمجتها من خلال تعليمات المعالج (IN و OUT و MOV و الخ .... )

بس والله انا ما فهمت اخر سطر ياعزيزى

كيف اعرف عناوين المنافد هل عن طريق البيوس ولا هى لها عناوين اخرى

واسم كتاب يشرح كل شىء عن الاسمبلى 32 بت والمعالج P4 غير ملفات انتل

وياريت لوفى شرح مختصر ما هى تكنولجيا MMX

وهل SSE3 نوع جديد من المعالجات ولا من نفس نوع P4

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 2 ديسمبر 2005 في 20:38

_____________________________

C Language && Windwos_API

_____________________________

#5

عزيزى حمادة انت تقفز من موضوع إلى موضوع, الرجاء حدد هدفك الاول لان الاسئلة الكثيره عن مواضيع المعالج تعقد الامور لديك, ولن تستفيد, وطلوع السلم خطوة خطوة..

المقاطعات نفسها لا يتم برمجتها وإنما هى جزء من النظام, مقاطعات البيوس توجد فى البيوس وتم برمجتها من قبل الشركة المنتجة لها, إذا كنت تقصد استدعاء المقاطعات فلها طريقة خاصة وهى اولاً عليك ان تعرف ما هى الدوال التى تتطلبها المقاطعه, يعنى فى بعض الاحيان تتطلب المقاطعة وجود رقم معين فى المسجل ax وفى احيان اخرى تتطلب وجود رقم فى المسجل al وهكذا, اما بالنسبة لإستدعاء المقاطعة فإنه يتم بالامر int, بالنسبة ل in و out فهى دوال لإرسال بايت معين إلى منفذ معين وفى الغالب قيمة البايت تكون فى المسجل al.

عناوين المنافذ امثال com1 و lpt1 تكون معرفة فى البيوس, ما عليك سوى الذهاب إلى برنامج البيوس وذلك عن طريق إختيار الزر المعين الذى يجعلك تدخل برنامج البيوس قبل إقلاع النظام, هذا الزر يختلف من نظام إلى نظام, فى الغالب يكون del او f8 ..

MMX هى تقنية موجوده منذ صدور معالجات البنتيوم الاصدار الثانى, وهى تستخدم مسجلات الFPU لحفظ المتغيرات..

كذلك الSSE و الSSE2 فهى متوفره فى بنتيوم 2 و 3 على ما اذكر اما SSE3 فهى خاصة بالاصدار الاخير من بينتيوم 3 وجميع إصدارت البينتيوم 4 ...

والسلام عليكم

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#6

شكر

مش معقول كل شوية تقوللى حدد هدفك

قلت مليون مرة تصميم المترجمات لكن انا مازلت فى مرحلة التعلم

انا بس ببحث عن طريقة مناسبة للتعلم الاسمبلى 32 بت وكل شىء عن اساليب ادارة الداكرة والمنافد بس

_____________________________

C Language && Windwos_API

_____________________________

#7

هناك نوعين من الـ interrupts في انظمة x86 (سلسلة اجهزة intel مثل بنتيوم)

أولا:

software interrupts

و هي تعرف في بعض الأمظنة الأخرى بـ traps و هي ببساطة استدعاء لخدمة من خدمات النظام, يمكنك ان تفكر فيها كأنها function لكن الفرق حسب ما أظن انها تنفذ في صلاحيات أعلى (يعني النظام هو اللذي ينفذها و ليس برنامجك, لذلك عندما ينفذها يكون له صلاحيات غير محدودة, بعكس برنامجك, اللذي يملك صلاحيات محدودة).

ثانيا:

hardware interrupts

و هي وسيلة للتخاطب بين الـ cpu و الأجهزة المرتبطة بالكومبيوتر, فبدلا من ان يقوم الـ cpu طوال الوقت بسؤال الجهاز عن حالته, فإن الجهاز يقوم بمقاطعة عمل الحاسوب كلما طرأ عليه شيء جديد.

مثلا, كلما تضغط زر الكيبورد, فإن الكيبورد يقوم بإرسال اشارة (تمر بعدة مراحل) تصل الى الـ cpu و تجعله يتوقف عن عمله الحالي اللذي يقوم به من أجل معالجة ما جاء من الكيبورد.

المقاطعات اللتي تتحدث عنها في هذا الموضوع هي software interrupts, لذلك فهي مجرد أكواد و أوامر عادية, لكنها تنفذ ضمن نطاق صلاحيات أعلى, قد لا يمكله برنامجك.

#8

تصميم المترجمات ليس هدف منطقي لابد ان تبداء بشيئ اقل من ذلك, هناك اشياء كثيرة يجب عليك ان تدرسها قبل ان تتمكن من تصميم مترجم.. حدد هدف معقول وعندما تصل لهدفك حدد هدف اخر..

الان تريد ان تتعلم ا لمقاطعات هذه وحدها تحتاج منك عدة شهور من الدراسة المكثفة لماذا تقفز للMMX والSSE ركز فى المقاطعات الاول هذا ما قصدته...

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

تصميم المترجمات اصلا ليس هكذا (اقصد ليس عن طريق تعلم الأسمبلي)

اول شي اعمل parsing و symantic analysis للكود .. بعد ما تخلص من هذي سيكون عليك تحويل البرنامج الى لغة الآلة او الأسمبلي, و عند تلك المرحلة فقط يبقى تعال قلي عايز اتعلم اسمبلي!!

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

لسة حتدوخ في الـ segfault و هذه الأمور ..

#10

مشكلتى انى عاوز افهم اشياء كتيرة عن المعالج وملفات انتل صعبة اوى كيف يتم تخزين البيانات بصفة دائمة زى المتغيرات ان اتحكم فى اخد مساحة من الداكرة لتسجيل بها بيانات معية وكيفية مسحها مرة اخرى

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 3 ديسمبر 2005 في 12:36

_____________________________

C Language && Windwos_API

_____________________________

#11
احمد غريب كتب:
امور كثيرة مختلطة عندك يا حمادة انصحك بقرائة كتاب يشرح المعالجات...

والسلام عليكم

[

تم تعديل هذه المشاركة بواسطة DeltaAziz في 3 ديسمبر 2005 في 16:35

d4baa0.gif
#12

طيب ممكن تدلنى على اسم كتاب بيشرح المعالجات وكيف اعرف عناوين المنافد الخاصة بالجهاز

_____________________________

C Language && Windwos_API

_____________________________

#13

أخي hamada

إخترت C# إقرء و طبق هذا

Free Compiler Construction Tools

لو كان لديك كل الملفات المصدرية للغة مثلا Turbo Pascal هل سيفيدك هذا ؟

d4baa0.gif
#14

كتاب طرحه الأخ glimps

عليك

بهذا الكتاب سيفيدك حتما

d4baa0.gif
#15

مشكورين جدا اخواتى

اخى DeltaAziz

الرابط لا يعمل معى ممكن تعدله لو سمحت

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 3 ديسمبر 2005 في 23:56

_____________________________

C Language && Windwos_API

_____________________________

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…