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

[ تمت الإجابة ]سؤال عن العنونة الحقيقية والظاهرية

بدأه need-help في 19 فبراير 2008 · 14 رد · 6,157 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اشكركم جدا وياريت تفهمونى دى ايضا

--------------------------------ده من كتاب عربى---------------------------------------------

وبالتالي لتحديد عنوان محدد في الذاكرة يجب توضيح قيمة كل من المقطع والإزاحة وبالتالي تتم كتابة العنوان على الصورة:

Segment : Offset

وهو ما يسمي بالعنوان المنطقي Logical Address فمثلاً العنوان AABB:5566 يعني الإزاحة 5566 داخل المقطع AABB.

للحصول على العنوان الفيزيائي يتم ضرب قيمة المقطع في الرقم 16 ( إزاحته لليسار بمقدار أربعة خانات ثنائية أو خانة واحدة سداسية عشر) ويتم بعد ذلك إضافة قيمة الإزاحة إليه وبالتالي فإن العنوان الفيزيائي المناظر للعنوان AABB:5566 هو:

1 1 1

0 B B A A

6 6 5 5 +

(العنوان الفيزيائي بطول 20 خانة) 6 1 1 0 B =

وبالتالي يصبح العنوان الفيزيائي = رقم المقطع × 16+ قيمة الإزاحة = B0116

-------------------------------------------------------------------------------------------------

اولا ليه العنوان دهSegment : Offsetمنطقى ليه مش هوه الحقيقى

وايه الفرق بين المنطقى والحقيقى

تانى حاجه عمليه ضرب المقطع فى 16 مش فاهمها ويهنى ايه ازاحته لليسار

ممكن تشرحولى خطوات عملية الضرب وحده وحده

فيه سؤال تانى قبل الموضوع ده بسى اشرحولى ده الاول ارجوكم دلوقتى

تم تعديل هذه المشاركة بواسطة need-help في 19 فبراير 2008 في 21:23

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#2

/index.php?showtopic=127278

هل يكفيك هذا الموضوع؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

السلام عليكم

اشكرك جدا وبالنسبه لسؤالى انا من دقائق بحثت فى موقع اجنبى والحمد لله باحاول افهمه

Now let's talk about segments. The 8086 divides it's memory into segments. Segments are (standard in DOS) 64 KB big and have a number. These numbers are stored in the segment registers (see above). Three main segments are the code, data and stack segment. Segments overlap each other almost completely. If you start debug again and type "d" you can see some addresses at the left of the screen. The format is like this: 4576:0100. that's a memory address. The first number is the segment number and the second number is the offset within the segment. So FFFF:FFF0 means: Segment FFFFh and FFF0h bytes from the beginning of the segment.

As I said before, segments overlap. The address 0000:0010 is EXACTLY the same address as 0001:0000. That means that segment begin at paragraph boundaries. (a paragraph=16 bytes, so the segment starts at an address divisible by 16) Now you can start calculating REAL addresses in memory. An example: 0000:0010 means: segment 0000h offset 10h Now we multiply the segment number with 16 and add the offset.

Note that the offset 10h means the value 16 in decimal: (0 * 16 = 0 + 16 = 16) this is the linear address.

Next, the other address 0001:0000: (16 * 1 = 16 + 0 = 16). Same linear address! Like I told you. These are some basic things you need to know when you want to program in Assembly. Learn the registers and flags by heart and try to understand the segmentation of memory.

http://www.xs4all.nl/~smit/asm01001.htm

انا باحاول افهمه لو تساعدنى

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#4

هيه دى الجزئه الى عاوز افهمها دى وبس

The address 0000:0010 is EXACTLY the same address as 0001:0000. That means that segment begin at paragraph boundaries

ازاى 0000:0010 تساوى 0001:0000

وبعدين ايه حكايه الباراقراف ده

انتظار المساعده شئ ممل والله لكن هانتظر هاعمل ايه يعنى

تم تعديل هذه المشاركة بواسطة need-help في 20 فبراير 2008 في 02:54

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#5
ch04a3.gif

هذه هي الذاكرة (لشرح التقسيم الخاص بها)

الاسطر تمثل الـ Segment #

الاعمدة تمثل الـ Offset

كل سطر (Segment) مقسوم الى 64kb (الشكل النموذجي للتقسيم على معالجات x86)

أي كل Segment يعنون 65535 (64 * 1024) بايت = 0FFFFh (وهو ما يمثل الـ Offset)

لماذا فقط 64 كيلو؟ لان عملية الـ Segmenting تتم بناء على حجم الـ Offset المسموح والذي على معالجات 8086 و 80286 لا يكون اكبر من 16بت (اي 0FFFFh على سبيل المثال, 2 bytes) بالتالي هو محكوم فقط بـ 64 كيلو.

انظر الى الصورة مرة أخرى, هل ترى المربع الزهري اللون؟ لنفرض اننا نبدأ بالترقيم للمربعات بالسطر 10 والعمود 50

اي لدينا 0010:0050 الذي يشير الى اول مربع في الزاوية العلوية اليسرى من الكتلة ككل.

المربع الزهري اللون الآن يمكن أن نشير اليه بالعنوان 0014:0054 (حيث يشير الجزء الى اليسار بانه في السطر 14 اي الـ Segment = 14) (ويشير الجزء الى اليمين الى انه في العمود 54 اي الـ Offset = 54)

هذا ما يسمى بالعنوان التخيلي (المنطقي, Logical/Virtual)

عند حساب العنوان الحقيقي الآن (الفيزيائي Physical) نقوم باستخدام الصيغة (Segment * 16 + Offset)

ما هو غير مفهوم بالنسبة لك هو موضوع الـ 16 هذه..

لنعد لتذكر موضوع الـ Segments Registers,

CS, DS, ES, SS كلها مسجلات بطول 16 بت, يحمل كل منها عنوان يشير الى مقطع ما (Segment ما)

عندما تم توسعة الذاكرة من قبل IBM الى 1 ميغا بايت بقيت المشكلة في موضوع العنونة باستخدام 16 بت نفسها (طول المسجلات المستخدمة)

عندها تم ابتكار فكرة الـ segmentation. لكن الفكرة لم تكن بتقسيم هذا الـ 1 ميغا بايت الى 16 كتلة متساوية من البيانات (لاحظ, 1 ميغا = 1024 كليوبايت, كل segment حجمه 64 كيلو بالتالي 1024/64 = 16) -- لانه لو تم التقسيم بهذا الشكل لأصبحنا مرغمين على الا يكون عدد الـ segments المستخدمه اكبر من 16 بالتالي ستأخذ الترقيم من 0 حتى 15 فقط ويكون عندها كل segment بشكل إجباري حجمه 64 كيلوبايت, لا اكثر ولا اقل, أيضا هذا يعني استخدام 4 بتات فقط من الـ 16 بت الممكن استخدامه واضاعة 12!

لذلك تم التقسيم على اساس استخدام كامل الـ 16 بت, بحيث تصبح الاقسام segments متداخلة ببعضها البعض (ما قصده النص السابق بـ overlapped). لذلك يمكن اعتماد الشكل التالي

لنفرض الـ segment رقم 0, الذي يمكننا العنونة فيه من 0 حتى 65536

الـ segment رقم 1, يمكننا العنونة فيه من 16 حتى 65552

الـ segment رقم 2, من 32 حتى 65568

وهكذا بشكل متزايد بمقدار 16. بالتالي يتم عنونة هذا الـ 1 ميغا بشكل كامل بدون اضاعة اي بت من حجم المسجلات التي نستخدمها للعنونة.

هذه الكتلة من البايتات المجزءة الى 16 بايت تسمى بالفقرة paragraph (قد ترى ترجمات أخرى مثل "القطعة") -- لذلك يقسم الـ 1 ميغا الى 16 فقرة كل واحدة بحجم 64 كيلو تسمح بعنونة الـ 1 ميغا.

بخصوص آخر نقطة, 0000:0021 هو نفسه 0001:0005

كتبت الجواب بنفسك, قيمة المقطع × 16 + الازاحة.

في الحالة الاولى الى اليمين: 0 × 16 + 21 = 21

في الحالة الثانية الى اليسار: 1 × 16 + 5 = 21

وهو ما وضحناه بمفهوم التداخل.

فقط تذكر, كي لا تترسخ الصورة السابقة في ذهنك, الذاكرة عبارة عن كتل معنونة بشكل خطّي, كما في الشكل التالي:

ch04a4.gif

ان شاء الله تكون الاجابة كافية.

تم تعديل هذه المشاركة بواسطة Junkie في 20 فبراير 2008 في 04:42

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

السلام عليكم

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

ولا تزعل منى على امبارح

مش عارف اشكرك ازاى والله

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#7

هناك مقال سيرع عنك اللبس في هده الأمور للأخ zool@nder من الفريق العربي للهندسة العكسية

RVA__VA_and_Offset_Mystery.rar

تم تعديل هذه المشاركة بواسطة Junkie في 21 فبراير 2008 في 12:09

#8

قمت باضافة المقال للمشاركة نفسها -- أخي مراد مقال الاخ zool@nder هدفه مختلف.

السلام عليكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

اشكركم جدا وان كان الهدف مخالف ولكن ذيادة الخير خيرين

والحمد الله فهمت الموضوع

وان كنت فى امس الحاجه الى مرجع ولو كان بالعبرى اوال الهيروغليفى عن" ادارة الذاكره"

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#10

ضعه في موضوع منفصل بعنوان مناسب وحدد بالضبط ما تقصد بالـ memory management فهو موضوع ضخم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#11

السلام عليكم

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

عندى عقده فى راسى اسمها "ايجت ازاى ومنين وعلشان ايه"

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

وكما ترى الموضوع عن ادارة ذاكرة المعالج وانا ابحث بشكل مفصل عن ادارة الذاكره فى المعالجات منذ 8086 حتى الان لذلك طلبت مرجع

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

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

اشكرك على اهتمامك

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#12

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

فيما يتعلق بما قلته عن اغلاق الموضوع بكتابتك

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

فأقول لك أنا من المشرفين على القسم لن اخبرك ان تفتح موضوع جديد لو كان احد المشرفين معي سيقوم بإغلاقه لك :D

فيما يتعلق بموضوع ادارة الذاكرة ما زال الموضوع غير واضح بالنسبة لي ما تطلبه بالضبط, قم بفتح موضوع جديد ليتم النقاش فيه ان شاء الله, هناك allocating, paging, protecting, addressing... الخ

هل تتكلم عن العنونة ام الانماط المحمي والحقيقي ام.. ماذا بالضبط؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#13

كنت اراجع مواضيع القسم القديمة فوجدت هذا :lol:

/index.php?showtopic=76734

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14

ياسلام عليك مبدع والله

الموقع مليان معلومات تايهه بين الردود

طيب سؤال شخصى "من غير متقول اعمل موضوع جديد"

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

والاجمل انه يضغط كل قسم لوحده اسيمبلى وسى و وكده

والله انا احترت معاك مش عارف اشكرك ازاى وانا عملت موضوع جديد ومستنى اى حد يساعدنى

فى نفس الوقت انا لقيت صفحات ممتازه هيه قديمه لكن من ايام مااخترعوا الترانزسستور وعمال من هنا لهناك

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

سلام

معلومه لله يامحسنين ومن قدم معلومه بيداه التقاه

وهنيالك يافاعل الخير والثواب

#15

:rolleyes:

الموضوع غير وارد حاليا بخصوص استفسارك عن "تحميل" محتويات الموقع.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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

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

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

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

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