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

كيف أستطيع إخراج عنوان ما .. من الDS مثلا ؟؟

مغلق
بدأه n3rd في 17 مايو 2007 · 7 رد · 1,637 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بعد قراءة مجموعة من المصار التي تتحدث عن الإسمبلي أصبح بمقدوري كتابة بعض البرامج البسيطة جدا .. << طباعة على الشاشة فقط

ولكن من المعروف إنه الـDS مسجل مقطع .. والمقطع تبدأ في عنوان من الذاكر يقبل القسمة على 16 .. سؤالي هو كيف أستطيع أن أحدد حجرة أو غرفة ما من خلال الإزاحة

هل أقوم بطرح مثلا .. DS من الـIP ؟؟ مع العلم أنني مازلت في الجزء النظري .. وأكرر وأحاول وأتعلم فيه لكي تكون لي أساسيات قوية وتكون إنطلاقتي جيدة !

ولكن المكتوب لدي في الكتاب هو:

اقتباس
ونستطيع من الـDS ومن قيمة الإزاحة الموجودة في الـIP الوصول الى محتويات أي حجرة في ذاكرة مقطع المعلومات ؟؟

فهل أجابتي بالأعلى الصحيحة ::

اقتباس
أقوم بطرح مثلا .. DS من الـIP

أنا قرأت عن الإزاحة .. فهل ممكن شرح منكم بسيط ومختصر لكي لا تلتبس على المصطلحات والمفاهيم .. ؟؟؟

وهل هناك روابط لمقالات عن "الأعداد الست عشرية" ;؟؟

ممكن شرح بسيط عن هذه العبارة:

اقتباس
تستخدم المسجلات الدليلية في تعزيز العنونة في عمليتي الجمع والطرح , تتألف من المسجلين DI,SI.

تحيتي لكم ,,,

تم تعديل هذه المشاركة بواسطة n3rd في 17 مايو 2007 في 01:47

#2

لماذا لا القسم نائم لهذه الدرجة .. المشرفين يروا الموضوع ولا يجيبوا .. الأعضاء يقرؤون الموضوع ولا يجيبون .. وأنا مبتدأ في أمس الحاجة إلى المساعدة ... ؟

سؤال آخر:

حاليا أدرس أعلام التحقق .. وطبعا يجب أن أكون على دراية تامة بالأرقام الثنائيـــــــــــة ...

أنا أعرف أجمع الأعداد الثنائية ولكن لا أستطيع طرحها !!

فهل هناك من قاعدة ما؟

تحيتي لكمـ ,,,

#3
اقتباس
مفهوم العنوان الفيزيائي و الإزاحات

مقدمة

لاحظنا أن الذاكرة بطول 1 ميغا بايت أي أنها مرقمة من 00000h إلى FFFFFh لذلك فإننا نحتاج أثناء عنونة المقاطع إلى رقم ست عشري بطول 20 بت ذلك لأن تمثيل رقم ست عشري بطول خمس خانات ( و هو المستخدم في ترقيم حجرات الذاكرة ) يحتاج إلى عشرين بت لكن مسجلات المقاطع و التي نستخدمها في العنونة هي بطول 16 بت فقط الأمر الذي يضطرنا إلى استنتاج عنوان فيزيائي بعشرين بت !!

شرح لايزيد عن سطرين ونص ... لو تكرمتم ؟

#4
n3rd كتب:
لماذا لا القسم نائم لهذه الدرجة .. المشرفين يروا الموضوع ولا يجيبوا .. الأعضاء يقرؤون الموضوع ولا يجيبون .. وأنا مبتدأ في أمس الحاجة إلى المساعدة ... ؟

سؤال آخر:

حاليا أدرس أعلام التحقق .. وطبعا يجب أن أكون على دراية تامة بالأرقام الثنائيـــــــــــة ...

أنا أعرف أجمع الأعداد الثنائية ولكن لا أستطيع طرحها !!

فهل هناك من قاعدة ما؟

تحيتي لكمـ ,,,

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

لنفرض أن لدينا

1010 1100

و نريد أن نطرحه من 1011 1110

اذا في هذه الحاله سيكون:

11101011
-
11001010
----------------

كيفية الطرح هي باستخدام ال Two Complement بمعنى أنك تقلب الاحاد الى أصفار و الأصفار الى أحاد ثم تقوم باضافة واحد الى الناتج، بمعنى ال 1010 1100 يتحول الى 0101 0011 و تضيف عليه واحد فيصبح 0110 0011

و بعد ذلك تجمعه مع العدد السابق

11101011
+
00110110
-------------
00100001

و أتمنى من الأخوه التفاعل قليلا

و شكرا

تم تعديل هذه المشاركة بواسطة Yousof في 17 مايو 2007 في 15:11

#5

مشكور أخوي يوسف ,,, جزاك اللهـ ألف خير !!!

#6

بالنسبة لسؤالك الاول عن فائدة مسجلات المقاطع

فى المعالجات القديمة مثل 6502 كانت العنونة تتم من خلال مسجل يسمى عدداد البرنامج Program counter تخيل مع كبر حجم الذاكرة اننى اذا اردت اى شئ من الذاكرة ( متغير تعليمة ) ان اذكر عنوانها مباشرة وذلك مع وصول الذاكرة الى ما هى عليه الان

المهم كما تعلم تم تقسيم الذاكرة الى مقاطع ( CS DS Es SS ) وانت تعرفهم طبعا وقالو ان كل مسجل منهم سيحمل اول عنوان له فى الذاكرة اى عنوان بداية المقطع ولكن عرض المسجل 16 بت اذا فاذا قلنا ان اول عنوان لمقطع الكود هو 0100

ولكننا لم نحص على العنوان الفعال حتى الان ولذلك يجب عمل ازاحة 4 بت اى خانة رقم سداسى عشر واحد ويتم ذلك بالضرب فى 10h

وبذلك المقطع الفعلى ياتى من المعادلة

0100h * 10h = 0100

اى اننا عرفنا بعد ذلك العنوان الفعال ( الحقيقى ) لبداية مقطع الكود فى الذاكرة طبعا اذا اردنا ان نتجول فى مقطع الكود بعد ذلك فماذا سنفعل طبعا مسجل ال IP

اردنا الحجرة التالية فى مقطع الذاكرة سنضع فى ال IP واحد

وبذلك بجمعه مع مسجل المقطع سينتج العنوان التالى

0100h * 10h + 1h = 01001h

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

تم تعديل هذه المشاركة بواسطة حريف برمجة في 17 مايو 2007 في 22:48

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#7

..

لكن كيف نعرف ما هو عنوان بداية المقطع لكل segment

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

#8

هذا حسب البرنامج اين سيعمل فى اى معالج وهكذا

اذا اردت كتابة الكود مثلا فى ال Cs فانت تستخدم ال ofset فقط وتكتب تعليماتك

اما بالازاحة 4 بت وذلك لان عرض مسجلات المعالج 16 بت وانت تحتاج الى 20 بت لكى تتحكم فى ذاكرة 1 ميجابيت وبذلك تضيف 4 بت الى القيمة الموجودة فى المسجل فينتج عنوان عرض 20 بت

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

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

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